C# 以正确的格式下载文档,无需MIME
我有一个允许上传/下载任何文档(主要是.docx、.doc、.pdf)的Web服务,当查询下载时,它返回的是C# 以正确的格式下载文档,无需MIME,c#,asp.net,file,http-headers,C#,Asp.net,File,Http Headers,我有一个允许上传/下载任何文档(主要是.docx、.doc、.pdf)的Web服务,当查询下载时,它返回的是byte[] 我已经写了这个代码 string ContractGUID = dtContract.Rows[0]["ContractGUID"].ToString(); //Get Bytes from WebService byte[] fileData = BLL.Contract.GetDocument(new Guid(ContractGUID)); Response.
byte[]
我已经写了这个代码
string ContractGUID = dtContract.Rows[0]["ContractGUID"].ToString();
//Get Bytes from WebService
byte[] fileData = BLL.Contract.GetDocument(new Guid(ContractGUID));
Response.Clear();
Response.BinaryWrite(fileData);
Response.AddHeader("Content-Disposition", "Attachment");
Response.Flush();
Web服务公开的其他方法有GetDocumentName
和GetDocumentLen
是否可以确定Mime类型或强制浏览器以正确的格式下载?目前它正在Chrome中以.htm
的形式下载,打开后,我看到了一些有趣的字符。有更好的建议吗
谢谢。我想,浏览器是通过文件名来完成的 e、 g: dbFile.filename是一个字符串
dbFile.data是一个字节[]否,如果您不通过内容类型标题告知浏览器,则无法强制浏览器以正确的格式下载
Response.ContentType = "application/pdf"; //or whatever appropriate
如果web服务公开了一个GetDocumentName()
方法,您可能可以通过查看该名称推断出适当的格式,假设该名称具有文件扩展名。很明显,这不是防弹的,因为您可以将文件的扩展名更改为您想要的任何内容
另一种选择是通过查看第一个字节来尝试猜测文件格式。例如,如果文件的前4个字节是25504446
,则很可能这是一个PDF文件。他们有一个相当广泛的清单
以下是这些链接的列表。这些链接的可能副本非常有用。谢谢
Response.ContentType = "application/pdf"; //or whatever appropriate