You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Google Drive API上传Excel文件失败,参照官方文档代码仍无法解决的问题求助

解决Google Drive API上传Excel文件失败的问题

我来帮你排查下这个上传失败的问题,看了你的代码后发现几个关键错误点,咱们一个个来修正:

1. 权限范围配置错误

你当前使用的权限是https://www.googleapis.com/auth/drive.metadata.readonly,这个权限仅允许读取Drive的元数据,完全没有上传文件的权限。必须替换成具备写入权限的范围:

  • 推荐使用https://www.googleapis.com/auth/drive.file:最小权限,仅对你的应用上传的文件有访问权,符合安全最佳实践
  • 或者使用https://www.googleapis.com/auth/drive:全权限,谨慎使用(仅限测试或完全信任的场景)

2. Excel文件读取方式错误

你用require()来加载Excel文件是完全错误的——require()是Node.js用来加载JS/JSON模块的方法,根本无法处理二进制格式的Excel文件。正确的做法是使用Node.js的fs模块创建可读流来读取文件内容。

修正后的完整代码示例

const fs = require('fs');
const path = require('path');
const { google } = require('googleapis');

@Get('teste')
async teste(){
 const keys = require(path.resolve('src', 'files', 'api', 'keys'))
 const client = new google.auth.JWT(
  keys.client_email,
  null,
  keys.private_key,
  // 替换为具备写入权限的范围
  ['https://www.googleapis.com/auth/drive.file']
 )

 // 把回调转成Promise,适配async/await语法,避免嵌套回调
 try {
  await client.authorize();
  this.gdrun(client);
 } catch (err) {
  console.error('授权失败:', err);
 }
}

gdrun(client){
 const drive = google.drive({version: 'v3', auth: client});
 var fileMetadata = {
  name: 'My Report',
  mimeType: 'application/vnd.google-apps.spreadsheet' // 自动转换为Google表格格式
 };
 var media = {
  mimeType: 'application/vnd.ms-excel',
  // 使用fs创建可读流读取本地Excel文件
  body: fs.createReadStream(path.resolve('src', 'files', 'excel', 'solargroup.xlsx'))
 };
 drive.files.create({
  resource: fileMetadata,
  media: media,
  fields: 'id'
 }, function (err, file: any) {
  if (err) {
   console.error('上传失败:', err);
  } else {
   console.log('文件上传成功,File Id:', file.id);
  }
 });
}

额外注意事项

  • 如果要上传到指定的Drive文件夹,需要在fileMetadata里添加parents: ['目标文件夹ID'],并且确保你的服务账号邮箱被添加到该文件夹的共享成员中(至少赋予编辑权限)
  • 确认solargroup.xlsx文件的路径完全正确,避免因文件不存在导致的读取失败
  • 如果转换为Google表格格式失败,可以尝试把fileMetadata.mimeType改成application/vnd.openxmlformats-officedocument.spreadsheetml.sheet(对应xlsx格式),直接上传原文件而不做格式转换

内容的提问来源于stack exchange,提问作者Lucas Modolo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.29 10:17:41