如何使用 Google Drive API V3 将文件上传到群组驱动器(共享驱动器)?

How to upload file to Group Drive (Shared Drive) with Google Drive API V3?

我有一个问题,如何使用 Google 驱动器 API 将文件上传到群组驱动器(共享驱动器)?

我已尝试为该文件夹(Group Drive)设置父 ID,但这似乎不起作用。

public uploadFile(stream, totalSize, mime, fileName, parentId?, callback?) {
    //Init upload
    this.emit('progress', {
        type: 'file',
        name: fileName,
        uploaded: 0,
        size: totalSize
    });
    debug('Uploading file %s with parentId: %s', fileName, parentId);
    //start upload
    var drive = google.drive({ version: 'v3', auth: this.oauth2Client });
    var fileMetadata = {
        name: fileName,
        mimeType: mime,
        'parents': [
            "0AFiiwdVdxetuUk9PVA"
        ],
        'teamDriveId': "0AFiiwdVdxetuUk9PVA"
    }
    if (parentId) {
        fileMetadata['parents'] = [parentId];
    }
    var req = drive.files.create({
        resource: fileMetadata,
        media: {
            mimeType: mime,
            body: stream
        }
    }, (err, resp) => {
        debug('Uploaded %s to Drive Successfully', fileName);
        this.emit("fileUploaded", {
            size: totalSize,
            name: fileName,
            error: err
        });
        if (callback)
            callback(err, resp);
    });
    var interval = setInterval(() => {
        this.emit("progress", {
            type: 'file',
            name: fileName,
            uploaded: req.req.connection.bytesWritten,
            size: totalSize
        });
        if (req.req.connection.bytesWritten >= totalSize) {
            clearInterval(interval);
        }
    }, SPEED_TICK_TIME);
    return req;
}

这是我尝试过的方法,但出现此错误:

    at IncomingMessage.emit (events.js:208:7)   code: 404,   errors:    [ { domain: 'global',
       reason: 'notFound',
       message: 'File not found: 0AFiiwdVdxetuUk9PVA.',
       locationType: 'parameter',
       location: 'fileId' } ] }

我想通了。结果我只需要添加 supportsAllDrives 和 driveId insted of teamDriveId。

public uploadFile(stream, totalSize, mime, fileName, parentId?, callback?) {
    //Init upload
    this.emit('progress', {
        type: 'file',
        name: fileName,
        uploaded: 0,
        size: totalSize
    });
    debug('Uploading file %s with parentId: %s', fileName, parentId);
    //start upload
    var drive = google.drive({ version: 'v3', auth: this.oauth2Client });
    var fileMetadata = {
        name: fileName,
        driveId: "0AFiiwdVdxetuUk9PVA",
        mimeType: mime
    }
    if (parentId) {
        fileMetadata['parents'] = [parentId];
    } else {
        fileMetadata['parents'] = ["0AFiiwdVdxetuUk9PVA"];
    }
    var req = drive.files.create({
        resource: fileMetadata,
        media: {
            mimeType: mime,
            body: stream
        },
        supportsAllDrives: true,
    }, (err, resp) => {
        debug('Uploaded %s to Drive Successfully', fileName);
        this.emit("fileUploaded", {
            size: totalSize,
            name: fileName,
            error: err
        });
        if (callback)
            callback(err, resp);
    });
    var interval = setInterval(() => {
        this.emit("progress", {
            type: 'file',
            name: fileName,
            uploaded: req.req.connection.bytesWritten,
            size: totalSize
        });
        if (req.req.connection.bytesWritten >= totalSize) {
            clearInterval(interval);
        }
    }, SPEED_TICK_TIME);
    return req;
}