我需要将JavaScript生成的文件(最多几MB)发送到服务器。我需要使用POST(而不是ajax POST)。
如何将文件添加到输入类型="文件"通过JavaScript?根据{{3}},似乎由于安全原因这是不可能的。但我在浏览器中创建文件,这不应该是安全问题。
我可以将文件作为文本粘贴到其他类型的输入中。但我觉得这不对。
这里的解决方案是什么?有没有办法把文件从浏览器放到文件输入?或者可以用其他输入做到吗?有没有办法如何在没有输入元素的情况下将文件打包到POST?
我想使用的是什么:
$("#button").click(function(e) {
$('#file').val(export_pdf());
$('#form').submit();
});
答案 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发送到服务器的文件的相同结果。