【问题标题】:google drive api upload success return id. but file not exist in drive?google drive api 上传成功返回id。但驱动器中不存在文件?
【发布时间】:2021-07-23 20:29:18
【问题描述】:

上传成功并返回 id。并试图 drive.files.list 太。它存在。但驱动器中不存在文件?这是什么?我尝试通过 id 在特定文件夹中上传。文件上传位置在哪里?

const { google } = require('googleapis');
const fs = require('fs');
const credentials = require('./credentials.json');
const scopes = [
    'https://www.googleapis.com/auth/drive'
];

const auth = new google.auth.JWT(
    credentials.client_email, null,
    credentials.private_key, scopes
);

const drive = google.drive({ version: 'v3', auth });

(async () => {
    
    const fileMetadata = {
        name: 'naruto.jpg'
    };

    const media = {
        mimeType: 'image/jpeg',
        body: fs.createReadStream('naruto.jpg')
    };

    const res = await drive.files.create({
        q: `'1PhND1fjEDnL63BbrLmw2V4M4B6jIfP8Q' in parents`,
        resource: fileMetadata,
        media: media,
        fields: 'id'
    });

    console.log(res.data);
    
})();

【问题讨论】:

    标签: node.js google-api google-drive-api service-accounts google-api-nodejs-client


    【解决方案1】:

    您似乎正在使用服务帐户。服务帐户有自己的 google drive 帐户,在您的情况下,您似乎已将文件上传到服务帐户 google drive 帐户。

    如果您想将文件上传到您自己的个人 Google Drive 帐户,您应该与您个人 Drive 帐户上的服务帐户共享一个目录,然后在创建文件元数据时确保将父目录设置在您想要的位置上传到的文件。

    let fileMetadata = {
            'name': 'icon.png',
            'parents':  [  '10krlloIS2i_2u_ewkdv3_1NqcpmWSL1w'  ]
        };
    

    代码也从Upload Image to Google drive with Node Js 窃取 Google drive API upload file with Nodejs + service account

    【讨论】:

    • 我已将特定文件夹绑定添加到服务。我将文件夹父级绑定到我的服务帐户。然后,我创建子文件夹。我把它上传到那个子文件夹。
    • 不,您在不带 q 参数的 create 方法中添加了 q 参数。你需要像我展示的那样在文件元数据中设置它。
    • 现在它上传到父文件夹中。那么该父级中的所有内容都不属于父级服务帐户吗?所以我需要为每个文件夹设置权限?
    • 我尝试上传到仍未设置权限的子文件夹。它返回错误父母不是文件夹。
    • 服务帐户需要对您要上传到的文件夹具有权限。每个人都做你不能写到一个你无权访问的地方。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-03-28
    • 1970-01-01
    • 1970-01-01
    • 2015-01-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多