Добавьте файл (объект JS) в тип ввода = файл

Мне нужен способ добавить объект File в поле ввода файла.

Обратите внимание, что я не хочу установите значение поля файла. (это угроза безопасности... я это знаю)
У меня уже есть сам файл (и все его содержимое!)

Я создаю объект File следующим образом:

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. Я хочу загрузить файл на внешний веб-сайт (возможно, используя пользовательский скрипт или что-то подобное).

Итак, как я могу этого добиться? Или, если это невозможно: почему я не могу добавить файл, которым я действительно владею (потому что я создал его в браузере (как виртуальный файл, который даже не существует в файловой системе пользователя)) в поле ввода, которым я владею слишком? (технически поле ввода может быть моим собственным, здесь это не имеет значения)


person default connection    schedule 11.08.2016    source источник
comment
Возможный дубликат ввод HTML-файла, установка выбора из объекта File   -  person Mingle Li    schedule 11.08.2016


Ответы (1)


Нет, ты не можешь.

Взято из здесь:

Похоже, вы хотите взять объект File из события drop и присвоить его элементу. К сожалению, вы не можете этого сделать. Только пользователь может выбирать файлы; вы не можете динамически изменять файлы, которые будут загружены, потому что браузеры запрещают JavaScript эту возможность по соображениям безопасности.

person Mingle Li    schedule 11.08.2016
comment
да... потому что, если программно изменить input file, веб-разработчик может легко украсть пользовательские файлы.. - person Syamsoul Azrien; 11.09.2019