根据文件的类型下载文件,或者如何给Response.AppendHeader两个选项
本文关键字:文件 AppendHeader Response 选项 两个 类型 下载 或者 | 更新日期: 2023-09-27 18:10:18
我允许用户下载PDF文件或zip文件,当他们尝试下载文件时,我希望根据文件的类型下载相应的文件。例如:如果上传的文件是PDF,那么应该以PDF格式下载;如果上传的文件是zip,那么它应该作为zip文件下载。
我已经编写了这段代码,并且我能够在附加头中使用"output.pdf"下载PDF文件,但不知道如何给出两个选项来附加头,以便它根据其类型下载文件。
protected void gridExpenditures_RowCommand(object sender, GridViewCommandEventArgs e)
{
if (e.CommandName == "Download")
{
Response.Clear();
Response.ContentType = "application/octet-stream";
Response.AppendHeader("content-disposition", "FileName=" + e.CommandArgument + "output.pdf");
Response.TransmitFile(Server.MapPath("~/Match/Files/") + e.CommandArgument);
Response.End();
}
}
您可以使用像这样的实用程序来检测所讨论的文件的内容类型,然后像这样呈现标题:
protected void gridExpenditures_RowCommand(object sender, GridViewCommandEventArgs e)
{
if (e.CommandName == "Download")
{
var filePath = Server.MapPath("~/Match/Files/") + e.CommandArgument;
var contentType = MimeTypes.GetContentType(filePath);
if (string.IsNullOrEmpty(contentType))
{
contentType = "application/octet-stream";
}
Response.Clear();
Response.ContentType = contentType;
Response.AppendHeader("content-disposition", "FileName=" + e.CommandArgument);
Response.TransmitFile(filePath);
Response.End();
}
}
您需要将您的内容类型设置为适当的应用程序,而不是octet-stream。
例如我用这个打开PowerPoint:
应用/vnd.openxmlformats-officedocument.presentationml.presentation在这个链接中查找你的文件类型:http://en.wikipedia.org/wiki/Internet_media_type
我将每个文件的上传内容类型存储在数据库中。