Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/apache-flex/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 以正确的格式下载文档,无需MIME_C#_Asp.net_File_Http Headers - Fatal编程技术网

C# 以正确的格式下载文档,无需MIME

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.

我有一个允许上传/下载任何文档(主要是.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.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