下载Excel文件
本文关键字:文件 Excel 下载 | 更新日期: 2023-09-27 18:27:06
我在这里读过一些关于如何从网站下载Excel文件的文章。所以,我设置了以下代码:
string path = MapPath(fname);
string name = Path.GetFileName(path);
string ext = Path.GetExtension(path);
string type = "application/vnd.ms-excel";
if (forceDownload)
{
Response.AppendHeader("content-disposition",
"attachment; filename=" + name);
}
if (type != "")
{
Response.ContentType = type;
Response.WriteFile(path);
Response.End();
}
但是,我没有得到下载对话框。
我在IE 8和FireFox 10.0.2中都尝试过。
文件在那里,它没有被锁定,也没有设置为只读
我不确定我错了。
根据此链接,您需要添加以下行:
strFileName = Path.GetFileName(path);
Response.TransmitFile( Server.MapPath(strFileName) );
这将导致弹出一个"打开/另存为"对话框,其中的文件名SailBig.jpg是预设的默认文件名。
当然,这是假设您正在馈送一个已经存在的文件。如果你需要动态生成的提要,比如内存中生成的图像[或任何文件],你可以使用Response.BinaryWrite()来流式传输字节数组,或者直接在Response.OutputStream.中写入输出
编辑:
微软的MSDN网站有一个关于文件下载的详细解释。它包括Java和.Net应用程序的示例,概念相同:
- 得到回应
- 回复:
- 将内容类型设置为"APPLICATION/OCTET-STREAM"(这意味着没有打开文件的应用程序)
- 将标题设置为"Content Disposition","attachment;filename=''"++"''"
- 将文件内容写入响应中
- 关闭响应
因此,查看MSDN ASP.Net文件下载,您缺少2.3步骤。您只是将文件名写入响应中。
// transfer the file byte-by-byte to the response object
System.IO.FileInfo fileToDownload = new
System.IO.FileInfo("C:''downloadJSP''DownloadConv''myFile.txt");
Response.Flush();
Response.WriteFile(fileToDownload.FullName);
在这个例子中,您将成功下载您的文件,当然,如果您可以毫无问题地获得文件:)。
编辑2:
用于下载任何文件的HTML组件必须是常规的HTML请求。任何下载文件的ajax请求都不起作用。微软在这里对此进行了解释。主要报价:
通过javascript在下载前后附加事件是不可能的。出于安全原因,浏览器不允许此类事件。
您需要在文件附件头之前发送此消息:
Response.ContentType = "application/vnd.ms-excel"
请参阅:将数据从失败的经典ASP 导出到excel文件
尝试添加这样的HTTP头
Content-Type: application/force-download
Content-Type: application/vnd.ms-excel
Content-Type: application/download