我使用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();
我从帖子here获得了参考。但是,当我通过点击按钮启动下载时,我得到了
关于异常的"无法找到C部分:/ Users / Public / Temp /"
消息。我不确定这是因为文件夹不在服务器上。我需要添加到文件路径中吗?请帮我理解我哪里错了。如果有更好的下载方式,请建议。
(这是我正在研究的原型,我将扩展到网络位置)
答案 0 :(得分:0)
我认为这是因为fileName查询字符串为空(由于回发)。相当蹩脚,我以前没有找到它。在这种情况下,TransmitFile正在获取“C:/ Users / Public / Temp /”的路径,但不是实际的文件路径,因此也就是错误。
现在,我使用ViewState保存fileName的数据,而TransmitFile获取完整路径C:/ Users / Public / Temp / fileName,它可以正常工作。