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

时间:2016-07-12 09:26:05

标签: javascript html

我在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
}

0 个答案:

没有答案