【发布时间】:2012-06-12 22:59:04
【问题描述】:
这类似于:How to open a file using JavaScript?
目标:通过双击图像检索/打开文件
function getFile(filename){
// setting mime this way is for example only
var mime = 'application/vnd.openxmlformats-officedocument.wordprocessingml.document';
jQuery.ajax({ url : 'get_file.pl',
data : {filename:filename},
success : function(data){
var win = window.open('','title');
win.document.open(mime);
win.document.write(data);
win.document.close();
}
});
}
jQuery('#imgID').dblclick(function(){
getFile('someFile.docx');
});
我正在做这件事,但我认为以上内容适用于文本文件,但不适用于二进制文件。有没有可以正确执行此操作的插件?理想的情况是在浏览器(或应用程序)中打开文件,而不是下载,但我怀疑这是一个梦想。如果必须使用保存/打开对话框下载文件,那很好。
编辑:
我忘记提及的一条信息是,我希望这是一个 POST 请求。这也是我开始关注 AJAX 的部分原因。我已经看到创建表单/iframe 来执行类似操作的变通方法,但我正在寻找返回信息的更好处理程序。
【问题讨论】:
-
据我所知,浏览器会阻止应用程序的直接执行(我相信出于安全目的),除非浏览器上安装了插件(如 flash、adobe reader 等),或者分配了处理程序(如磁铁链接)。否则,它只会让您保存文件并手动打开它。
-
与您链接的类似问题有什么不同?
-
@Bergi:好问题。 (1) 我链接到的问题是使用原型,在我的示例中我使用的是 jQuery;我不确定返回的对象与他们的 AJAX 请求是否有区别,但我认为 jQuery 的
data返回文本/字符串。 (2) 我可能没有指定一个关键细节,我想避免 GET 请求。 -
@Bergi:再说一次,我链接到的页面中的答案是处理
responseText,所以我想它们在这方面是相似的;然而,这个问题是近 3 年前提出的,从那时起,javascript 发生了很大变化,尤其是随着 HTML5 的广泛采用。
标签: javascript jquery download