google drive api загрузить файл после создания новой папки - PullRequest
0 голосов
/ 22 апреля 2019

В настоящее время я слежу за документом Google Drive API и пытаюсь создать функцию, создать папку и загрузить в нее файл после создания. В настоящее время ему удалось создать только новую папку, но файл, который я хочу загрузить, не отображается в этой новой папке. Я уже включил API и поделился целевой папки с учетной записью службы upload.js

const { google } = require('googleapis');
const fs = require('fs');
const key = require('./test-creds.json');
const drive = google.drive('v3');
const targetFolderId = "1Q_2I3_UpAGs13jEMXGYLgm0dXahnhN4Z"

const jwtClient = new google.auth.JWT(
    key.client_email,
    null,
    key.private_key,
    ['https://www.googleapis.com/auth/drive'],
    null
);

function uploadFile(childFolderID) {
    const fileMetadata = {
        name: 'photo.jpg'
    }
    const media = {
        mimeType: 'image/jpeg',
        body: fs.createReadStream('photo.jpg'),
        parents: [childFolderID]
    }
    drive.files.create({
        auth: jwtClient,
        resource: fileMetadata,
        media: media,
        fields: 'id'
    }, (err, file) => {
        if (err) {
            console.log(err);
            return;
        } else {
            console.log("imaged uploaded with id ", file.data.id);
            console.log(childFolderID);
        }
    });
}
jwtClient.authorize((authErr) => {
    if (authErr) {
        console.log(authErr);
        return;
    }
    const folderMetadata = {
        name: 'child5',
        mimeType: 'application/vnd.google-apps.folder',
        parents: [targetFolderId]
    };
    drive.files.create({
        auth: jwtClient,
        resource: folderMetadata,
        fields: 'id'
    }, (err, file) => {
        if (err) {
            console.log(err);
            return;
        }
        console.log('uploaded folder with id: ', file.data.id);
        const childFolderID = file.data.id;
        return uploadFile(childFolderID);
    })
});

здесь вывод:

загруженная папка с идентификатором: 1RKu9fxBr-6Pl7F0x5vfrqWb3cgH095BO imaged

загружено с идентификатором 1QGBjXdv6GkgFQDtEsapA_hpAkXGRYEs7

любая помощь будет признательна :)

1 Ответ

0 голосов
/ 22 апреля 2019

я выяснил, что я сделал неправильно,

родители: [childFolderID]

должны быть в fileMetadata, потому что это тип файла, поэтому в функции fileUpload это должно бытьэто:

const fileMetadata = {
    name: 'photo.jpg',
    parents: [childFolderID]
}
const media = {
    mimeType: 'image/jpeg',
    body: fs.createReadStream('photo.jpg'),
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...