legongju.com
我们一直在努力
2024-12-23 20:42 | 星期一

ASP.NET Stream如何使用

ASP.NET Stream 是一个用于处理文件上传和下载的类

  1. 首先,确保在项目中引用了 System.IO 命名空间。

  2. 创建一个用于处理文件上传的方法:

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("文件上传成功");
}
  1. 创建一个用于处理文件下载的方法:
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";
    }
}
  1. 在 ASP.NET 页面上创建一个文件上传控件和一个按钮,以便用户可以选择文件并触发上传操作:
  1. 创建一个文件下载链接,以便用户可以下载文件:
下载文件

现在,当用户选择一个文件并点击上传按钮时,UploadFile 方法将文件保存到服务器的 “Uploads” 文件夹中。用户还可以点击下载链接来下载服务器上的文件。

未经允许不得转载 » 本文链接:https://www.legongju.com/article/37245.html

相关推荐

  • asp.net ajax有哪些应用场景

    asp.net ajax有哪些应用场景

    ASP.NET AJAX(Asynchronous JavaScript and XML)是一个用于创建交互式Web应用程序的技术集合,它扩展了ASP.NET框架。ASP.NET AJAX的主要应用场景包括: 实时数...

  • asp.net ajax性能怎样优化

    asp.net ajax性能怎样优化

    ASP.NET AJAX(现在称为ASP.NET Core)的性能优化是一个多方面的过程,涉及到代码、配置、服务器资源等多个层面。以下是一些常见的优化策略:
    1. 减少页面加...

  • asp.net ajax安全性如何保障

    asp.net ajax安全性如何保障

    ASP.NET AJAX 提供了多种方法来确保应用程序的安全性。以下是一些建议: 使用 HTTPS:使用 HTTPS 可以确保在客户端和服务器之间传输的数据是加密的,从而防止中间...

  • asp.net ajax数据怎样传递

    asp.net ajax数据怎样传递

    ASP.NET AJAX 数据传递主要通过异步请求(UpdatePanel)和 Web 方法(WebMethod)两种方式实现。下面分别介绍这两种方法的实现过程。 使用 UpdatePanel 进行异步...

  • ASP.NET LINQ的安全性

    ASP.NET LINQ的安全性

    ASP.NET LINQ(Language Integrated Query)是ASP.NET框架中用于查询和操作数据源的强大工具,它允许开发者使用类似于SQL的语法来处理各种数据源。然而,与任何技...

  • ASP.NET LINQ的缓存机制

    ASP.NET LINQ的缓存机制

    ASP.NET LINQ(Language Integrated Query)是一种用于处理数据查询的强大工具,它允许开发人员以声明式方式编写查询代码。在ASP.NET中,LINQ可以与缓存机制结合...

  • ASP.NET LINQ的数据库连接

    ASP.NET LINQ的数据库连接

    ASP.NET LINQ(Language Integrated Query)是一种用于查询和操作数据库的强大工具。它允许开发人员使用C#或Visual Basic等编程语言编写查询,而无需编写SQL语句...

  • ASP.NET LINQ的错误处理

    ASP.NET LINQ的错误处理

    在ASP.NET中使用LINQ时,可能会遇到各种错误。为了确保应用程序的健壮性,我们需要对这些错误进行适当的处理。以下是一些建议: 使用try-catch语句:在可能引发异...