Setelah mencoba berbagai cara, saya tidak dapat menemukan solusi langsung untuk masalah ini. Sebaliknya, saya memutuskan untuk menggunakan drive pribadi saya dan memindahkan file ke ke drive tim saya.
Dimungkinkan untuk memindahkan file dari drive pribadi Anda ke drive tim Anda, tetapi Anda tidak dapat memindahkan folder. Jadi pertama-tama saya membuat folder di drive tim saya dengan kode berikut:
gapi.client.drive.files.create({ 'supportsTeamDrives':"true", 'teamDriveId': 'teamID', "name" : 'test', "mimeType" : "application/vnd.google-apps.folder", 'parents': ['folderID'] }).then(function(response) { console.log(response) });
Ini akan membuat folder kosong di drive tim Anda.
Kemudian Anda dapat mengunggah file ke drive pribadi Anda menggunakan ini:
function insertFile(fileData, callback, desc, folderID) { const boundary = '-------314159265358979323846'; const delimiter = "\r\n--" + boundary + "\r\n"; const close_delim = "\r\n--" + boundary + "--"; var reader = new FileReader(); reader.readAsBinaryString(fileData); reader.onload = function(e) { var contentType = fileData.type || 'application/octet-stream'; var metadata = { 'title': fileData.name, 'mimeType': contentType, 'description': desc, "parents": [ { "id": folderID } ] }; var base64Data = btoa(reader.result); var multipartRequestBody = delimiter + 'Content-Type: application/json\r\n\r\n' + JSON.stringify(metadata) + delimiter + 'Content-Type: ' + contentType + '\r\n' + 'Content-Transfer-Encoding: base64\r\n' + '\r\n' + base64Data + close_delim; var request = gapi.client.request({ 'path': '/upload/drive/v2/files', 'method': 'POST', 'params': {'uploadType': 'multipart'}, 'headers': { 'Content-Type': 'multipart/mixed; boundary="' + boundary + '"' }, 'body': multipartRequestBody }); if (!callback) { callback = function(file) { console.log(file) }; } request.execute(callback); } }Ini akan mengunggah file ke drive pribadi Anda, Anda kemudian bisa mendapatkan ID file dari respons dan mengubah orang tuanya untuk memindahkannya ke drive tim:
Ini kemudian akan memindahkan file yang Anda unggah ke drive pribadi Anda, ke folder yang Anda buat di drive tim Anda.
Saya tahu ini adalah solusi ceroboh, tetapi saya tidak dapat menemukan pekerjaan lain sampai saat ini.
Saya harap seseorang menemukan ini berguna.
EDIT: Solusi untuk ini, ditulis sebagai fungsi async
/* This function reads the filedata asynchronously for insert*/ async function readFile(file){ let reader = new FileReader(); reader.readAsBinaryString(file); return await new Promise(resolve => { reader.onload = e => { resolve(btoa(e.target.result)); }; }); } /* This function inserts the file into the root of your personal drive, again this happens asynchronously */ async function insertFile(fileData) { try { const boundary = '-------314159265358979323846'; const delimiter = "\r\n--" + boundary + "\r\n"; const close_delim = "\r\n--" + boundary + "--"; let base64Data = null; await readFile(fileData).then(function(e) { base64Data = e; }); var contentType = fileData.type || 'application/octet-stream'; var metadata = { 'title': fileData.name, 'mimeType': contentType, "parents": [ { "id": 'root' } ] }; var multipartRequestBody = delimiter + 'Content-Type: application/json\r\n\r\n' + JSON.stringify(metadata) + delimiter + 'Content-Type: ' + contentType + '\r\n' + 'Content-Transfer-Encoding: base64\r\n' + '\r\n' + base64Data + close_delim; const fulfilledValue = await gapi.client.request({ 'path': '/upload/drive/v2/files', 'method': 'POST', 'params': {'uploadType': 'multipart'}, 'headers': { 'Content-Type': 'multipart/mixed; boundary="' + boundary + '"' }, 'body': multipartRequestBody }); let result = await fulfilledValue.result; return result; } catch (rejectedValue) { console.log("Failed to insert file into folder", rejectedValue); } } /*This function ties everything together and moves the file to your team drive, and removes it from your personal drive, you need to provide the file data, team drive ID, and the ID of the folder on the team drive, again this is asynchronous*/ async function insertTeamDrive(file, teamdriveID, folderID) { try { let id = null; await insertFile(file).then(function(e) { id = e.id; }); await gapi.client.drive.files.update({ fileId: id, 'supportsTeamDrives':"true", 'corpora':"teamDrive", 'teamDriveId': teamdriveID, addParents: folderID, removeParents: 'root', fields: 'id, parents' }).then(function(response) { console.log(response.result) }); } catch (rejectedValue) { console.log("Failed to insert into team drive", rejectedValue); } }Memanggil insertTeamDrive akan mengunggah file yang diberikan ke folder yang ditentukan pada drive tim yang diberikan.