Получение поврежденного файла xlsx и pdf с API диска - PullRequest
0 голосов
/ 09 ноября 2018

Я использую http-запущенную облачную функцию firebase для получения файла с диска API и отправки ответа обратно клиенту в виде вложения. Я делаю это потому, что только сервисная учетная запись имеет доступ к этим файлам на данный момент. Когда я загружаю с расширением xlsx или pdf, файл либо поврежден, либо пуст, соответственно, но когда я использую расширение csv, полученный файл не имеет ошибок и открывается правильно.

   function downloadFileFromDrive(res,req){
    const body=req.body;
   const fileId=body.fileId;
   const extension=body.extension; 
   const title=body.title;
    var extensionToMimeType={
    "xlsx": "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet",
    "csv":"text/csv",
    "pdf":"application/pdf"
};

    var jwt=getJwt();

    var apiKey=getApiKey();
    return new Promise((resolve,reject)=>{

      drive.files.export({
        fileId:fileId,
         mimeType:extensionToMimeType[extension],
         auth: jwt,
         key: apiKey,
      },(error,response)=>{
         if(error){
          console.log('Error during download ' +error.message);
          reject('Error during download' + error.message);
           res.send('Error during download' + error.message);
         }
         else{
          resolve(response.data);
          response.headers['content-disposition']='attachment; filename=\"'+title.replace(/ /g, '_')+'_results.'+extension+'\"'
          res.set(response.headers);
          res.send(response.data);

         }
      });


    });   

  }

Я также обнаружил эту проблему github и попытался использовать дополнительный параметр в export функции, подобной этой

     var config={encoding:'utf-8'};
         if(extension=='xlsx'||extension=='pdf'){
            config.encoding=null;
            console.log('xls or pdf');
         }
 drive.files.export({
            fileId:fileId,
             mimeType:extensionToMimeType[extension],
             auth: jwt,
             key: apiKey,
          },config,(error,response)=>{
            //handle callback
          });

Но все же файл xlsx поврежден, а файл pdf пуст. Что я должен сделать, чтобы правильно получить pdf и xlsx файл?

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