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

将文件附加到输入类型=";文件";使用javascript,javascript,html,http,Javascript,Html,Http,我需要将JavaScript生成的文件(最多几MB)发送到服务器。我需要用POST(而不是ajax POST)来完成它 如何通过JavaScript将文件添加到输入type=“file”?据报道,由于安全原因,这似乎是不可能的。但是我在浏览器中创建文件,这不应该是安全问题 我可能可以将文件作为文本粘贴到其他类型的输入。但我觉得这是不对的 这里的解决方案是什么?有没有办法把文件从浏览器放到文件输入端?或者用其他输入可以吗?有没有一种方法可以在没有输入元素的情况下打包要发布的文件 您可以选择我想要使

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

如何通过JavaScript将文件添加到输入type=“file”?据报道,由于安全原因,这似乎是不可能的。但是我在浏览器中创建文件,这不应该是安全问题

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

这里的解决方案是什么?有没有办法把文件从浏览器放到文件输入端?或者用其他输入可以吗?有没有一种方法可以在没有输入元素的情况下打包要发布的文件

您可以选择我想要使用的:

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

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

从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);
var formData=new formData();
//JavaScript类文件对象
var content='hey!';//新文件的正文。。。
var blob=新blob([content],{type:“text/xml”});
append(“webmasterfile”,blob);
var request=new XMLHttpRequest();
请求打开(“POST”http://foo.com/submitform.php");
请求。发送(formData);

这应该会得到JS生成的文件发送到服务器的相同结果。

该问题的可能重复回答了您的问题。这是不可能的。再次问同样的问题不会改变这一事实。请展示您如何创建file@Liam对不起,我认为很明显,另一个问题是关于通过浏览器从计算机获取的文件。但我说的是在浏览器中创建的文件,它根本不涉及计算机文件存储,因此这是不同的问题。@Liam让脚本发送它自己生成的二进制数据与让脚本从用户的文件系统发送文件非常不同。好的,但如果我这样发送文件,它不会将用户重定向到提供的地址,只是将文件发送到该地址。然后,您可以使用window.location.href=“url”重定向用户,我能想到的唯一其他选择是将文件内容附加到隐藏元素的值,但我从未使用过这样的方法,因此无法验证它的工作情况。但是使用window.location的解决方案会导致另一个请求。我需要实现的应该是非常简单的操作。两个请求都不好。不幸的是,这是web安全性的本质,我没有遇到过让您使用脚本生成的数据填充表单文件上载系统的方法。它是表单的只读属性。