我正在ASP.net中编写一个web应用程序。ASP.Net传输文件
我想出现一个文件对话框,用于从服务器下载东西。
我有适当的文件数据存储在一个名为文件的变量。
文件字段: 文件类型 - 文件
文件路径的MIME类型 - 服务器端文件路径
这里是到目前为止的代码:
Response.Clear();
Response.ContentType = file.FileType;
Response.AppendHeader("Content-Disposition", "attachment; filename=" + GetFileName(file));
Response.TransmitFile(file.FilePath) ;
Response.End();
用GetFileName是得到我的函数来自附件对象的文件名。我只存储路径。
上述代码位于名为“Download_Clicked”的函数中,该函数是点击时触发的事件。该事件映射到LinkButton。
问题是,当我运行上面的代码时,没有任何反应。标准对话框不出现。
我已经尝试了标准的故障排除,例如确保文件存在,并确保路径正确。他们都死了。
我的猜测是,因为我的机器也是服务器,它可能无法正确处理。
在此先感谢。
编辑1:试图将控件放到另一个页面上,工作正常。
编辑2:通过从AJAX更新面板中删除控件解决了问题。
是由IIS知道的MIME类型?你有没有尝试过使用“application/octet-stream”? –
我试过八位字节流的MIME类型,它仍然没有去。 – wanderingloki
Ajax更新面板无法使用FileUpload控件或使用响应下载文件。 MSAjax库内置了安全措施,如果您修改响应流,则会引发错误。下载动态生成文件的常用技术是将文件数据临时存储在会话变量中,然后将用户重定向到页面,该页面专门查看页面加载时的会话变量并将文件发送到浏览器。您也可以通过http处理程序执行此操作,或者将文件上载/下载控件保留在更新面板之外 –