Я использую Google Drive API для загрузки файлов. Это работает, если я укажу id подпапок. Но когда я передаю идентификатор корневой папки, файлы не загружаются. Вот мой запрос:
drive.files.create(
{
auth: this.ggToken,
fields: 'id',
supportsAllDrives: true,
media: {
body: this.convertBufferToStream(file.buffer),
},
requestBody: {
mimeType: file.mimetype,
name: file.originalname,
parents: ['root', '0AASRHiHHtzxrUk9PVA'],
},
},
(e: Error, f: any) => {
if (e) {
console.error(e);
}
console.log(f);
},
);
0AASRHiHHtzxrUk9PVA
- это идентификатор корневой папки (я получаю его с помощью API drive.files.get). Так что не так с моим кодом? Как я могу загрузить файлы в корневую папку? Спасибо.
Обновление 1 Вот мой скрипт:
ggToken: JWT;
constructor() {
this.ggToken = new google.auth.JWT(
process.env.GG_DRIVE_CLIENT_EMAIL,
null,
process.env.GG_DRIVE_PRIVATE_KEY,
['https://www.googleapis.com/auth/drive'],
null,
);
}
async uploadFiles(file: any) {
const credentials = await this.ggToken.authorize();
this.ggToken.setCredentials(credentials);
const uploadedFile = await drive.files.create({
auth: this.ggToken,
fields:
'id, name, mimeType, webViewLink, webContentLink, iconLink, size, originalFilename',
media: {
body: this.convertBufferToStream(file.buffer),
},
requestBody: {
mimeType: file.mimetype,
name: file.originalname,
parents: ['root'],
properties: {},
},
});
return {
driveResource: uploadedFile.data,
};
}
Я получил process.env.GG_DRIVE_CLIENT_EMAIL и process.env.GG_DRIVE_PRIVATE_KEY из файла json после создания сервераключ учетной записи.