Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/388.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
发布包含用Javascript创建的文件的表单?_Javascript_Html - Fatal编程技术网

发布包含用Javascript创建的文件的表单?

发布包含用Javascript创建的文件的表单?,javascript,html,Javascript,Html,我已经用JavaScript构建了一个CSV字符串。然后我想提交字符串,就好像它是另一个域上的另一个服务的文件一样,用户无需下载并重新上传它 我已经能够创建如下csv: 函数下载CSV(csvString){ 让csvUri='data:text/csv;charset=utf-8',+encodeURI(csvString); 让csvLink=document.createElement('a'); setAttribute('href',csvUri); setAttribute('dow

我已经用JavaScript构建了一个CSV字符串。然后我想提交字符串,就好像它是另一个域上的另一个服务的文件一样,用户无需下载并重新上传它

我已经能够创建如下csv:

函数下载CSV(csvString){
让csvUri='data:text/csv;charset=utf-8',+encodeURI(csvString);
让csvLink=document.createElement('a');
setAttribute('href',csvUri);
setAttribute('download','csvFile.csv');
document.body.appendChild(csvLink);
csvLink.click();
document.body.removeChild(csvLink);
}
我想做的是将“文件”附加到表单并直接提交。我知道我可以创建一个
Blob
并将其附加到
FormData
,我也可以像上面一样创建一个
,但似乎没有办法将文件恢复为html

以下是我开始的模糊路线:

函数上传csv(csvString,url){
设formData=new formData();
让csvFile=newblob([csvString],{type:“text/csv”});
append('csvFile',csvFile');
让form=document.createElement('form');
form.setAttribute('action',url);
form.setAttribute('method','POST');
setAttribute('enctype','multipart/formdata');
让输入=document.createElement('input');/???
//…魔法就在这里。。。
文件.正文.附件(表格);
表单提交();
document.body.removeChild(form);//由于立即重定向,可能不需要
}

这是一个非常有趣的问题。我还不熟悉
FormData
对象,我询问了它并得到了可能的解决方案,但我不清楚:既然你想“提交(…)到另一个域上的另一个服务”,为什么你想用立即重定向来替换当前页面?相反,您不能避免从
FormData
创建DOM元素,而仅仅使用
XMLHttpRequest.send()
来传输它吗?我希望表单的提交就像从浏览器提交一样。用户应该看到的下一页应该在该服务上。此外,以这种方式提交将绕过CORS,这意味着我不必向我提交的服务添加任何新内容,因为这是一个实时产品,我只是在制作一个原型。:)我不完全理解你最后一句话的意思。但是前两个问题很清楚,所以我考虑了另一种解决方法:通过
XMLHttpRequest.send()
传输
FormData
,正如前面所建议的,您可以等待成功,然后用一个简单的
document.location.replace(url)
重定向。不幸的是,我提交的不是实际页面。因此,我希望人们看到的页面将是对请求的响应。此外,由于CORS尚未设置,我将无法发送XMLHttpRequest,这是一个非常有趣的问题。我还不熟悉
FormData
对象,我询问了它并得到了可能的解决方案,但我不清楚:既然你想“提交(…)到另一个域上的另一个服务”,为什么你想用立即重定向来替换当前页面?相反,您不能避免从
FormData
创建DOM元素,而仅仅使用
XMLHttpRequest.send()
来传输它吗?我希望表单的提交就像从浏览器提交一样。用户应该看到的下一页应该在该服务上。此外,以这种方式提交将绕过CORS,这意味着我不必向我提交的服务添加任何新内容,因为这是一个实时产品,我只是在制作一个原型。:)我不完全理解你最后一句话的意思。但是前两个问题很清楚,所以我考虑了另一种解决方法:通过
XMLHttpRequest.send()
传输
FormData
,正如前面所建议的,您可以等待成功,然后用一个简单的
document.location.replace(url)
重定向。不幸的是,我提交的不是实际页面。因此,我希望人们看到的页面将是对请求的响应。此外,由于没有设置CORS,我将无法发送XMLHttpRequest