ASP.NET Stream 是一个用于处理文件上传和下载的类
-
首先,确保在项目中引用了 System.IO 命名空间。
-
创建一个用于处理文件上传的方法:
public void UploadFile(HttpPostedFileBase file) { // 检查文件是否为空 if (file == null || file.ContentLength == 0) { Response.Write("请选择一个文件"); return; } // 获取文件的扩展名 string extension = Path.GetExtension(file.FileName); // 为文件创建一个新的唯一名称 string fileName = Guid.NewGuid().ToString() + extension; // 设置文件保存的路径 string path = Path.Combine(Server.MapPath("~/Uploads"), fileName); // 将文件保存到服务器 using (FileStream fileStream = new FileStream(path, FileMode.Create)) { file.InputStream.CopyTo(fileStream); } Response.Write("文件上传成功"); }
- 创建一个用于处理文件下载的方法:
public void DownloadFile(string fileName)
{
// 检查文件是否存在
string path = Path.Combine(Server.MapPath("~/Uploads"), fileName);
if (!File.Exists(path))
{
Response.Write("文件不存在");
return;
}
// 设置响应头,以便浏览器知道这是一个文件下载请求
Response.ContentType = GetContentType(fileName);
Response.AddHeader("Content-Disposition", "attachment;filename=" + fileName);
Response.AddHeader("Content-Length", new FileInfo(path).Length.ToString());
// 使用 Stream 将文件发送给客户端
using (FileStream fileStream = new FileStream(path, FileMode.Open))
{
fileStream.CopyTo(Response.OutputStream);
}
}
// 获取文件的 MIME 类型
private string GetContentType(string fileName)
{
string extension = Path.GetExtension(fileName).ToLower();
switch (extension)
{
case ".jpg":
case ".jpeg":
return "image/jpeg";
case ".png":
return "image/png";
case ".gif":
return "image/gif";
case ".bmp":
return "image/bmp";
case ".txt":
return "text/plain";
case ".pdf":
return "application/pdf";
case ".docx":
return "application/vnd.openxmlformats-officedocument.wordprocessingml.document";
case ".xlsx":
return "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet";
case ".pptx":
return "application/vnd.openxmlformats-officedocument.presentationml.presentation";
default:
return "application/octet-stream";
}
}
- 在 ASP.NET 页面上创建一个文件上传控件和一个按钮,以便用户可以选择文件并触发上传操作:
- 创建一个文件下载链接,以便用户可以下载文件:
下载文件
现在,当用户选择一个文件并点击上传按钮时,UploadFile
方法将文件保存到服务器的 “Uploads” 文件夹中。用户还可以点击下载链接来下载服务器上的文件。