AJAX JavaScript表单捕获文件下载并获取文件信息

时间:2014-12-23 09:43:27

标签: javascript ajax

我创建了一个捕获Captcha表单提交的脚本。表格通常会下载一个文件(格式,I.E exe,zip等的混合),通常的方式(在chrome中,显示在底部下载,下载到“downloads”目录。

我不希望脚本实际存储下载到用户计算机上,因此我编辑了表单提交以使用AJAX处理下载,并将文件数据存储在变量中。然后,另一个函数将此脚本上载到PHP页面。

有没有办法检索下载文件的信息,文件名,文件类型等?它可以,例如被称为'Application.1.2.zip',但我不知道我不知道如何从下载文件的AJAX请求中检索这些数据。我需要这个的唯一原因是获取文件类型,所以我可以在第二个域上以正确的格式存储文件。

当前进程尝试使用AJAX从域A(任何文件格式)下载文件,将文件存储在变量中,然后使用AJAX将文件上载到域B.

谢谢,Dan。

1 个答案:

答案 0 :(得分:1)

Content-Disposition HTTP标头可以为您提供解决方案。来自W3C RFC2616

  

如果用户请求将内容保存到文件,则建议将Content-Disposition response-header字段用作原始服务器建议默认文件名的方法。这种用法源于RFC 1806 [35]中Content-Disposition的定义。

content-disposition = "Content-Disposition" ":"
                          disposition-type *( ";" disposition-parm )
disposition-type = "attachment" | disp-extension-token
disposition-parm = filename-parm | disp-extension-parm
filename-parm = "filename" "=" quoted-string
disp-extension-token = token
disp-extension-parm = token "=" ( token | quoted-string )

一个例子是

    Content-Disposition: attachment; filename="fname.ext"

这样,您可以在一个请求中执行此操作。

在JavaScript中,您可以提取与此类似的文件名:

var disposition = httpRequest.getResponseHeader('Content-Disposition');
var filename = disposition.substring(disposition.indexOf('=') + 1);
相关问题