将文件附加到输入类型="文件"用javascript

时间:2016-10-04 14:03:25

标签: javascript html http

我需要将JavaScript生成的文件(最多几MB)发送到服务器。我需要使用POST(而不是ajax POST)。

如何将文件添加到输入类型="文件"通过JavaScript?根据{{​​3}},似乎由于安全原因这是不可能的。但我在浏览器中创建文件,这不应该是安全问题。

我可以将文件作为文本粘贴到其他类型的输入中。但我觉得这不对。

这里的解决方案是什么?有没有办法把文件从浏览器放到文件输入?或者可以用其他输入做到吗?有没有办法如何在没有输入元素的情况下将文件打包到POST?

我想使用的是什么:

$("#button").click(function(e) {
    $('#file').val(export_pdf());
    $('#form').submit();
});

1 个答案:

答案 0 :(得分:3)

无法创建文件并将其附加到HTML表单输入,但使用FormData对象,您可以将生成的文件作为发布请求的一部分发送到服务器。

从MDN拉出来:

var formData = new FormData();

// JavaScript file-like object
var content = '<a id="a"><b id="b">hey!</b></a>'; // the body of the new file...
var blob = new Blob([content], { type: "text/xml"});

formData.append("webmasterfile", blob);

var request = new XMLHttpRequest();
request.open("POST", "http://foo.com/submitform.php");
request.send(formData);

哪个应该可以获得JS发送到服务器的文件的相同结果。