Google drive & vuejs 3-将文件上传到特定文件夹

9lowa7mx  于 2023-01-17  发布在  Vue.js
关注(0)|答案(2)|浏览(258)

这是我的功能上传文件到谷歌驱动器:

async processFiles(files) {
      const formData = new FormData()
      formData.append("file", files[0])
      formData.append("name", files[0].name)
      formData.append("parents", this.currentFolder.folderId)

      axios
        .post("https://www.googleapis.com/upload/drive/v3/files", formData, {
          headers: {
            Authorization: `Bearer ${this.accessToken}`,
           "Content-Type": "multipart/form-data",

          },
        })
        .then((response) => {
          console.log(response)
        })
        .catch((error) => {
          console.log(error)
        })
    },

文件正在上传到通用Google Drive,而不是特定的文件夹(this. currentfolder.folderId)。我在这里做错了什么?
我已经尝试了一些功能,这是唯一一个上传文件到谷歌驱动器。

bvjveswy

bvjveswy1#

在您的脚本中,进行以下修改如何?

修改的脚本:

async processFiles(files) {
  const formData = new FormData();
  formData.append("file", files[0]);
  formData.append('metadata', new Blob([JSON.stringify({ name: files[0].name, parents: [this.currentFolder.folderId] })], { type: 'application/json' }));
  axios
    .post("https://www.googleapis.com/upload/drive/v3/files", formData, {
      headers: { Authorization: `Bearer ${this.accessToken}` },
    })
    .then((response) => {
      console.log(response.data)
    })
    .catch((error) => {
      console.log(error)
    })
},
  • 运行此脚本时,文件files[0]将上载到Google云端硬盘,文件元数据为{ name: files[0].name, parents: [this.currentFolder.folderId] }
  • multipart/form-datanew FormData()运行请求时,不需要设置请求头的内容类型,包含边界的内容类型是自动创建的。
  • 为了设置文件元数据,我使用了formData.append('metadata', new Blob([JSON.stringify({ name: files[0].name, parents: [this.currentFolder.folderId] })], { type: 'application/json' }));

注:

  • 在此修改中,假设files[0]是有效的文件对象,并且您的访问令牌可以用于使用Drive API将文件上传到Google云端硬盘。

参考文献:

vhmi4jdf

vhmi4jdf2#

parents是一个列表参数,因此您应该在表单字段中提供。
就像这样:
formData.append("parents[]", this.currentFolder.folderId)

相关问题