Есть ли разница между файлом из файла и файлом, созданным с помощью конструктора? - PullRequest
0 голосов
/ 15 мая 2018

Дело в том, что если я отправляю файл из html-ввода в API, он обрабатывается правильно.

Однако, если я пытаюсь воссоздать его - я имею в виду - я копирую каждое свойство из File объекта, который загружен пользователем, например:

  • Предварительный просмотр
  • имя
  • размер
  • тип

для нативного объекта (const file = { ... }) в JavaScript, а затем я создаю File из него:

new File([random integer], file.name, { type: file.type, preview: file.preview }) (оно также имеет все остальные свойства, которые есть у обычного File)

Но тогда API не принимает его и говорит, что type недействительно.

Что это значит? Они оба явно идентичны . Каждая опора точно такая же. Но все же, если я создаю File из объекта, а не непосредственно из ввода, он не обрабатывается должным образом.

Ждем любых отзывов. Спасибо.

1 Ответ

0 голосов
/ 15 мая 2018

Чтобы ответить напрямую:

Объект File - это особый тип BLOB-объекта, который может использоваться в любом контексте, который может BLOB-объект.В частности, FileReader, URL.createObjectURL (), createImageBitmap () и XMLHttpRequest.send () принимают как BLOB-объекты, так и файлы.

Вот документы для BLOB-объектов.https://developer.mozilla.org/en-US/docs/Web/API/Blob

Вы не можете создать двоичное представление, создав литерал объекта.

Вы можете создать новый объект Blob ().

Вы можете посмотреть на эти примерычтобы узнать, как этого добиться:

https://developer.mozilla.org/en-US/docs/Web/API/Blob#Examples

Изменить

Чтобы быть ясным, в ваших попытках клонировать File,аспект базового Blob, который вы пропускаете при копировании свойств, - это snapshot_state , к которому у вас нет доступа во время выполнения Javascript.Чтобы создать это состояние, браузер должен создать новый объект Blob. Ссылка

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...