无法在Google云端硬盘上使用googleapis上传文件

时间:2019-05-31 22:04:45

标签: node.js vue.js vuejs2 google-drive-api service-accounts

我使用软件包googleapis(v.40)在google驱动器上上传文件时遇到问题:

在我的网络应用程序(使用Vue js编写)中,我需要使用googleapis将用户“ A”的图像文件上传到用户“ B”的google驱动器空间中。

为此,我从(用户B的)Google控制台平台创建了一个“服务帐户”,并生成了用于API访问的凭据。 (JWToken,服务到服务场景)

在我的Web应用程序中,通过服务帐户的json凭据获取AccessToken之后,我准备上传文件。但是,当我调用drive.files.create(...)api时,出现以下错误:

无效的多部分请求,其中的mime部分为0。

下面是一些代码:

... 

// get google api
const {google} = require("googleapis");
const drive      = google.drive("v3");

// get authorization token
let authToken = await getAuthToken() // it perfectly works
console.log(authToken)

let metadata = {
   name: name,
   parents: [idOfTheParentFolder]
}

let media = {
   mimeType: 'image/jpeg',
   body: file
}

let objImage = {
   auth: authToken,
   resource:metadata,
   media: media,
   fields: 'id',
}

drive.files.create(objImage, function (error, success) {
  if (!error) {
      ...
  }
  else{
    // here i got the error in question
  }
})

我已经在单个节点js文件中准确地尝试了此代码,并且可以正常工作,但是在Web浏览器Vue应用程序中无法正常工作。

首先让我说,用于显示文件的API(drive.files.list())和用于创建文件夹的API(drive.files.create())在我的Web应用程序中都可以正常工作。

有什么建议吗?

0 个答案:

没有答案