- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在运行 AJAX 脚本来提供不同类型的文件(.txt/.msg 以及图像和 PDF)。简而言之,弹出窗口,检索文件,再次自行关闭,非常基本:
$(function(){
$.ajax({
url: '../myUrl/myFile.msg',
method: 'GET',
xhrFields: {
responseType: 'blob'
},
success: function (data) {
var a = document.createElement('a');
document.body.appendChild(a);
var url = window.URL.createObjectURL(data);
a.href = url;
a.download = 'myFile.msg';
a.click();
a.target='_self';
setTimeout(function(){
window.URL.revokeObjectURL(url);
window.close();
}, 500);
}
});
});
我的问题是,通过此功能提供的 .msg 文件(由 MS Outlook 创建)被视为 blob://资源 - 因此,如果我们(懒惰的)用户想立即通过 Firefox 打开他们的 .msg 文件,他们的文本编辑器打开,他们得到了大量编码字符串垃圾。
我不确定这是否是 Outlook/.msg 特有的问题,而且我也不确定这是否只是 Firefox 的问题(Chrome 只是下载该文件)。
有没有办法让浏览器知道发送的文件是 .msg 文件,该文件应该由 Outlook 而不是文本编辑器处理?
最佳答案
通过覆盖 xhr 内容类型,您应该能够触发正确的应用程序打开。尝试将其添加到您的 ajax 调用中:
beforeSend: function(xhr) {
xhr.overrideMimeType('application/vnd.ms-outlook');
}
实际上,这一切似乎(在 Firefox 中)都是删除假定的默认 xml 类型,并使用文件扩展名来确定要使用哪个应用程序。为此,您还可以在覆盖中使用 application/*
甚至只是 *
。
关于javascript - 通过 jQuery 提供的文件被解释为 txt/blob,而不是正确的文件类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49860826/
我是一名优秀的程序员,十分优秀!