试图在ASP中下载文件.Net使用响应.传输文件显示“无法找到路径的一部分”

本文关键字:文件 一部分 路径 显示 响应 ASP 下载 Net 传输 | 更新日期: 2023-09-27 18:08:08

我使用的是ASP。Net Webforms和c#来下载我存储在物理路径上的文件。用户(C: ' ' ' Temp)。由于我没有将文件存储在服务器上,所以我使用物理位置下载文件,使用来自.aspx处理程序

的以下代码片段
        HttpRequest request = System.Web.HttpContext.Current.Request;
        HttpResponse response = System.Web.HttpContext.Current.Response;
        String fileName = request.QueryString["fileName"];
        String storagePath = "C:/Users/Public/Temp/";
        String filePath = String.Format("{0}/{1}", storagePath, fileName);
        response.ClearContent();
        response.Clear();
        response.ContentType = "application/octet-stream";
        response.AddHeader("Content-Disposition", "attachment; filename=" + fileName);
        response.TransmitFile(filePath);
        response.Flush();
        response.End();

我从这里的帖子中得到了参考。但是,当我通过单击按钮启动下载时,我得到

"无法找到部分C:/Users/Public/Temp/"

关于异常的

消息。我不确定这是否是因为文件夹不在服务器上。我需要在文件路径中添加什么吗?请帮助我了解我哪里做错了。如果有更好的下载方式,请建议。

(这是一个原型,我正在工作,我将扩展到一个网络位置)

试图在ASP中下载文件.Net使用响应.传输文件显示“无法找到路径的一部分”

我认为这是因为fileName查询字符串为空(由于回发)。真逊,我之前都没发现。在这种情况下,TransmitFile获得了"C:/Users/Public/Temp/"的路径,但不是实际的文件路径,因此出现了错误。

现在,我使用ViewState和TransmitFile持久化fileName的数据获得完整路径C:/Users/Public/Temp/fileName,它工作得很好。