从驱动器api接收损坏的xlsx和pdf文件

时间:2018-11-09 16:56:03

标签: google-drive-api

我正在使用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);

         }
      });


    });   

  }

我还检查了this的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文件?

0 个答案:

没有答案