Как создать файл объекта PDF из URL-адреса BLOB-объекта (URL.createObjectURL ()) - PullRequest
0 голосов
/ 22 января 2019

Я создал URL объекта PDF-файла, используя url: URL.createObjectURL (file [0]).

например, url = blob: http://0.0.0.0:5002/e468fb70-d597-4b17-bb3a-ec6272f2d7fe.

Теперь, что я хочу сделать, это прочитайте pdf из url = blob: http://0.0.0.0:5002/e468fb70-d597-4b17-bb3a-ec6272f2d7fe и создайте объект файла как

File(61) 
{
   name: "ICT_zbbihfc_dummy.pdf", 
   lastModified: 1548148972779, 
   lastModifiedDate: Tue Jan 22 2019 17:22:52 GMT+0800 (Singapore Standard Time), 
   webkitRelativePath: "", 
   size: 61,
   type: "application/pdf",
   webkitRelativePath: ""
}

Это в Javascript.

Ответы [ 2 ]

0 голосов
/ 23 января 2019

Чтобы преобразовать URL объекта BLOB-объекта PDF или изображения в объект File

var file_object = fetch('blob:http://0.0.0.0:5002/e468fb70-d597-4b17-bb3a-ec6272f2d7fe') 
          .then(r => r.blob())
          .then(blob => {
              var file_name = Math.random().toString(36).substring(6) + '_name.pdf'; //e.g ueq6ge1j_name.pdf
              var file_object = new File([blob], file_name, {type: 'application/pdf'});
              console.log(file_object); //Output
           });
//------- 

Чтобы преобразовать Base64 изображения в объект File

var file_object = fetch('data:image/jpeg;base64,/9j/4AAQSkZJRgABAQAAAQABAA') 
          .then(r => r.blob())
          .then(blob => {
              var file_name = Math.random().toString(36).substring(6) + '_name.jpeg'; //e.g ueq6ge1j_name.jpeg
              var file_object = new File([blob], file_name, {type: 'application/jpeg'});
              console.log(file_object); //Output
           });
//------- 
0 голосов
/ 22 января 2019

В комментарии вы уточнили:

Я выбираю файлы из тега ввода. после этого я создаю URL-адрес BLOB-объекта. и теперь при нажатии кнопки «Отправить» я хочу прочитать файл из URL-адреса BLOB-объекта как «Объект файла». Затем отправить объект «Файл» на сервер.

Вам не нужен File объект, чтобы сделать это. Вы можете просто отправить Blob, например, используя FormData s append метод, который принимает Blob s.

Однако: если у вас есть input, и вы получили File из input массива files, вы также можете просто использовать его напрямую, а не читать его и создавать Blob.

Вероятно, стоит указать, что элементы input type="file" имеют атрибут multiple , который можно использовать, чтобы указать, что его можно использовать для нескольких файлов (именно поэтому свойство files является сбор).

...