我正在使用javascript blob从服务器下载文件,例如
let blob = new Blob([resposne['_body']], { type: contentType });
if (navigator.msSaveBlob) {
navigator.msSaveOrOpenBlob(blob, fileName); // in case of IE
} else {
let objectUrl = window.URL.createObjectURL(blob);
window.open(objectUrl);
}
上面的代码工作正常但在IE中它显示了一个对话框:
此外,如果我在href标签中放置直接pdf链接,那么它也可以正常工作。因此看起来adobe插件没有问题。
我想要的是直接打开文件而不是显示此提示。我试过Registry hack as suggested here但没有运气。知道怎么做到这一点?
答案 0 :(得分:2)
对于遇到同一问题的任何人,我使用window.open
解决了这个问题。我没有下载响应,而是直接将URL传递给window.open
类似
window.open(apiUrl) // Exmp "host:api/documents/download?id=1"
注意:-API应该返回带有头类型集的流响应。就我而言,C#web API方法是
public HttpResponseMessage Download(int id)
{
var data = _service.Download(id);
HttpResponseMessage result = null;
result = Request.CreateResponse(HttpStatusCode.OK);
result.Content = new ByteArrayContent(data);//here data is byte[]
var name = data.Name.ToLower().Contains(data.DocType.ToLower())
? data.Name
: $"{data.Name}{data.DocType}";
result.Content.Headers.ContentDisposition = new ContentDispositionHeaderValue("inline")
{
FileName = name
};
result.Content.Headers.ContentType = new MediaTypeHeaderValue(MimeMapping.GetMimeMapping(name));
//here i am setting up the headers content type for example 'text/application-json'
return result;
}
希望它会对某人有所帮助。