添加一个文件(JS对象)到input type="file"

Add a File (JS object) to input type="file"

我需要一种将文件对象添加到文件输入字段的方法。

注意我不想set the value的文件字段。 (这是一个安全风险,......我知道)
我已经拥有文件本身(及其所有内容!)

我正在这样创建文件对象:

canvas.toBlob(function(blob) {
  var file = new File([blob], 'file.png');
  // and now I want to add MY File to the input here
});

请不要告诉我如何上传文件,我知道 XMLHttpRequest Level 2。我想将文件上传到外部网站(可能使用用户脚本或类似的东西)。

那么,我该如何实现呢? 或者如果不可能:为什么我不能将我实际拥有的文件(因为我在浏览器中创建它(作为虚拟文件,它甚至不存在于用户文件系统中))添加到我拥有的输入字段也? (从技术上讲,输入字段可以是我自己的,这在这里无关紧要)

不,你不能。

取自here:

It seems like you want to take the File object from the drop event and assign it to the element. Unfortunately, you can't do that. Only the user can select files; you can't dynamically change the files which will be uploaded because browsers deny JavaScript this ability for security reasons.