Заархивированный файл API Google Диска поврежден

Не удалось открыть zip-файл, поскольку он поврежден после загрузки с Google Диска REST API. Код следующим образом:

gapi.client.drive.files.get({'fileId':id,alt:'media'}).then((res)=>{
   const zipblob = new Blob([res.body])
   let a = document.createElement('a')
   a.download = 'sample.zip'
   a.href = window.URL.createObjectURL(zipblob)
   a.click()
}

Заголовок ответа от Drive REST API выглядит следующим образом:

Content-Type: "application/zip"
cache-control: "private, max-age=0, must-revalidate"
content-length: "216"
content-type: "text/plain;charset=UTF-8"
date: "Tue, 12 Mar 2019 04:40:39 GMT"
expires: "Tue, 12 Mar 2019 04:40:39 GMT"
server: "UploadServer"
vary: "Origin, X-Origin"
x-guploader-uploadid: "AEnB2Upp9nbCpCrydypTCBqEH-Yc8p7cpRbvDLBGyxb9t4n1TRGux7Zcvw_2fSd3ibEav2q4cw6luDRoMNwzc5ytX57LsEwHbg"

Я где-то нашел решение, и оно работает.

function str2bytes(str){
   var bytes = new Uint8Array(str.length)
   for (var i=0; i<str.length; i++){
      bytes[i] = str.charCodeAt(i);
   }
   return bytes;
}

gapi.client.drive.files.get({'fileId':id,alt:'media'}).then((res)=>{
   const zipblob = new Blob([str2bytes(res.body)])
   let a = document.createElement('a')
   a.download = 'sample.zip'
   a.href = window.URL.createObjectURL(zipblob)
   a.click()
})

Здесь особо нечего делать. При размере 216 байт файл кажется немного маленьким. Вы пробовали открыть его в текстовом/шестнадцатеричном редакторе?

Phil 12.03.2019 06:46

@Phil, я создал файл только с содержимым «asdfasdf», сжал его и загрузил на свой Google Диск для этого тестирования. Вот почему размер файла составляет всего 216 байт. Я где-то нашел решение, и оно работает. Понятия не имею, почему это работает, поскольку я все еще только начинающий программист. Кстати, спасибо за помощь.

Tan Chia Yan 12.03.2019 08:56
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
2
2
230
0

Другие вопросы по теме