我有word文档在服务器上完美打开,但是当我使用我的网站的按钮点击事件下载它时,它获得了当前。 我使用下面的代码按钮单击以进行文档下载。 请帮忙解决这个问题: 我正在使用.net framework 3.5
Response.Clear();
Response.AddHeader("Content-Disposition", "attachment; filename=StandardLetter" + _responseId.ToString() + ".doc");
Response.ContentType = "application/octet-stream";
Response.TransmitFile (Server.MapPath("~/document/letter/StandardLetter" + _responseId.ToString() + ".doc"));
答案 0 :(得分:2)
您发布的代码后是否有Response.End()
?如果没有,您将从添加到传输文件的aspx文件中获得额外的“html”代码 - 从而破坏它。
修改强>
正如Akshay Anand所提到的,更好的方法是拨打HttpContext.Current.ApplicationInstance.CompleteRequest();
而不是Response.End()
see docs。另请参阅this question。
答案 1 :(得分:1)
而是尝试:
Response.ContentType ="application/msword";
我不使用Word,但对于Excel,我使用:
Response.ContentType = "application/x-msexcel"
答案 2 :(得分:1)
好的,这里是我使用的代码,它是vb但很容易转换;)
Response.ContentType = "application/pdf"
Dim byteArray As Byte() = File.ReadAllBytes(MergedFile)
Response.AddHeader("Content-Disposition", "attachment;filename=""" & ShortFilename & """")
Response.AddHeader("Content-Length", byteArray.Length)
Response.BinaryWrite(byteArray)
Response.Flush()
Response.End()
这适用于PDF,并且通过将.ContentType更改为Excel也会出现这种情况。所以我认为这将采用任何MIME类型。祝你好运!
我把我的pdf文档称为MergedFile并将其转换为byte(),我给它一个可以由用户输入的'ShortName'。内容长度非常重要..