我有第三方API。当我打电话给api时,它会输出一个word文档。
在我的.net网站上,我有一个ASPX页面。当用户浏览该页面时,我必须调用该第三方API,获取word文档,并将其作为可下载的word文档发送给用户。
注意: 出于安全原因,我无法使用javascript调用第三方API。
我试过下面的代码
WebClient wClient = new WebClient();
var pagesource = wClient.DownloadString("3rd party api");
Response.Clear();
Response.AddHeader("Content-Type", "application/msword");
Response.AddHeader("Content-Disposition", "attachment; filename=test.docx");
Response.Write(pagesource);
Response.End();
下载word文档。但是当我打开它时,它已经被破坏了。
答案 0 :(得分:1)
我相信wClient.DownloadString
将以字符串形式下载文档。您希望使用.DownloadData
将数据作为字节数组(二进制)获取。然后是:
var fileBytes = wClient.DownloadData("3rd party api");;
if (fileBytes == null) return;
string filename = DateTime.Now.ToString("yyyy-MM-dd") + "-filename.docx";
Response.Clear();
Response.AddHeader("Content-Length", fileBytes.Length.ToString(CultureInfo.InvariantCulture));
//Response.AddHeader("Content-Disposition", string.Format("attachment; filename={0}", filename)); // save file as attachment
Response.AddHeader("Content-Disposition", string.Format("inline; filename={0}", filename)); // display inline in browser
Response.AddHeader("Content-Type", "application/vnd.openxmlformats-officedocument.wordprocessingml.document");
Response.BinaryWrite(fileBytes);
Response.Flush();
Response.End();
答案 1 :(得分:0)
非常确定您的mime类型对于docx不正确。您使用的是.doc。
尝试
Response.AddHeader("Content-Type", "application/vnd.openxmlformats-officedocument.wordprocessingml.document");