我在JavaScript中构建了一个CSV字符串。然后,我想将字符串作为文件提交给另一个域上的另一个服务,而无需用户下载并重新上传。
我已经能够像这样创建一个csv:
function downloadCsv(csvString) {
let csvUri = 'data:text/csv;charset=utf-8,' + encodeURI(csvString);
let csvLink = document.createElement('a');
csvLink.setAttribute('href', csvUri);
csvLink.setAttribute('download', 'csvFile.csv');
document.body.appendChild(csvLink);
csvLink.click();
document.body.removeChild(csvLink);
}
我想做的是将“文件”附加到表单并直接提交。我知道我可以创建Blob
并将其附加到FormData
,我可以像上面一样创建<form>
,但似乎没有办法让文件恢复进入html。
这是我开始的模糊路线:
function uploadCsv(csvString, url) {
let formData = new FormData();
let csvFile = new Blob([csvString], { type: "text/csv" });
formData.append('csvFile', csvFile);
let form = document.createElement('form');
form.setAttribute('action', url);
form.setAttribute('method', 'POST');
form.setAttribute('enctype', 'multipart/form-data');
let input = document.createElement('input'); // ???
// ... magic goes here ...
document.body.appendChild(form);
form.submit();
document.body.removeChild(form); // Probably not required due to immediate redirect
}