首页 > 解决方案 > 使用服务帐户的 Google drive api rest 上传文件不起作用

问题描述

从谷歌 iam 控制台创建服务帐户并使用 private_key、c​​lient_email 等获取 json 后...我在将它们集成到我的 javascript 代码中以将文件上传到带有身份验证服务器的谷歌驱动器到服务器时遇到问题。使用nodejs我没有任何问题(我使用了JWTtoken),如果您能帮助我在示例的javascript发布请求代码中正确插入身份验证参数,我将不胜感激。

       $.ajax({
        type: "POST",
        url: "https://www.googleapis.com/upload/drive/v3/files",
        data:{
            uploadType:"multipart",
            parents: ["xxxxxxxxxxxxxxxxxxxxxxxx"]
        },
        success: function (data) {
            console.log(data);
        },
        error: function (error) {
            console.log(error);
        },
        async: true,
        data: formData,
        cache: false,
        contentType: false,
        Authorization: ????????????????? <---
        processData: false,
        timeout: 60000
    });
};

当我尝试更新此文件时,我看不到任何结果。有人能帮我吗?

标签: javascriptapidrive

解决方案


在 $.ajax 函数中添加 contentType: false 。

将您的文件添加到 ajax 调用内的数据对象中。您应该像这样使用 FormData 对象:

var formData = new FormData();

formData.append('file', $('.file-input')[0].files[0]); 

然后在 $.ajax 函数中设置 data: formData


推荐阅读