Javascript 将文件夹上载到GDrive并获取用于上载文件的文件夹ID
谢谢你阅读我的问题。我正在开发谷歌硬盘api,可以将文件从文本块上传到谷歌硬盘。但是,我需要手动添加文件夹ID,以便用户使用此ID,并且不会出现错误,因为他们正试图将其上载到我的文件夹中。如何创建或获取文件夹ID?甚至可以上载到根GDrive目录?任何提示都会有帮助 谢谢Javascript 将文件夹上载到GDrive并获取用于上载文件的文件夹ID,javascript,google-api,google-drive-api,google-api-js-client,Javascript,Google Api,Google Drive Api,Google Api Js Client,谢谢你阅读我的问题。我正在开发谷歌硬盘api,可以将文件从文本块上传到谷歌硬盘。但是,我需要手动添加文件夹ID,以便用户使用此ID,并且不会出现错误,因为他们正试图将其上载到我的文件夹中。如何创建或获取文件夹ID?甚至可以上载到根GDrive目录?任何提示都会有帮助 谢谢 // Global vars const SCOPE = 'https://www.googleapis.com/auth/drive.file'; const gdResponse = document.querySelec
// Global vars
const SCOPE = 'https://www.googleapis.com/auth/drive.file';
const gdResponse = document.querySelector('#response');
const login = document.querySelector('#login');
const authStatus = document.querySelector('#auth-status');
const textWrap = document.querySelector('.textWrapper');
const addFolder = document.querySelector('#createFolder');
const uploadBtn = document.querySelector('#uploadFile');
// Save Button and Function
uploadBtn.addEventListener('click', uploadFile);
window.addEventListener('load', () => {
console.log('Loading init when page loads');
// Load the API's client and auth2 modules.
// Call the initClient function after the modules load.
gapi.load('client:auth2', initClient);
});
function initClient() {
const discoveryUrl =
'https://www.googleapis.com/discovery/v1/apis/drive/v3/rest';
// Initialize the gapi.client object, which app uses to make API requests.
// Get API key and client ID from API Console.
// 'scope' field specifies space-delimited list of access scopes.
gapi.client
.init({
apiKey: 'My-API-Key',
clientId:
'My-Client-ID',
discoveryDocs: [discoveryUrl],
scope: SCOPE,
})
.then(function () {
GoogleAuth = gapi.auth2.getAuthInstance();
// Listen for sign-in state changes.
GoogleAuth.isSignedIn.listen(updateSigninStatus);
// Actual upload of the file to GDrive
function uploadFile() {
let accessToken = gapi.auth.getToken().access_token; // Google Drive API Access Token
console.log('Upload Blob - Access Token: ' + accessToken);
let fileContent = document.querySelector('#content').value; // As a sample, upload a text file.
console.log('File Should Contain : ' + fileContent);
let file = new Blob([fileContent], { type: 'application/pdf' });
let metadata = {
name: 'Background Sync ' + date, // Filename
mimeType: 'text/plain', // mimeType at Google Drive
// For Testing Purpose you can change this File ID to a folder in your Google Drive
parents: ['Manually-entered-Folder-ID'], // Folder ID in Google Drive
// I'd like to have this automatically filled with a users folder ID
};
let form = new FormData();
form.append(
'metadata',
new Blob([JSON.stringify(metadata)], { type: 'application/json' })
);
form.append('file', file);
let xhr = new XMLHttpRequest();
xhr.open(
'post',
'https://www.googleapis.com/upload/drive/v3/files?uploadType=multipart&fields=id'
);
xhr.setRequestHeader('Authorization', 'Bearer ' + accessToken);
xhr.responseType = 'json';
xhr.onload = () => {
console.log(
'Upload Successful to GDrive: File ID Returned - ' + xhr.response.id
); // Retrieve uploaded file ID.
gdResponse.innerHTML =
'Uploaded File. File Response ID : ' + xhr.response.id;
};
xhr.send(form);
}
我没有包括一些无关的东西。我有类似的东西上传文件夹,它不工作,这并不奇怪
function createFolder() {
var fileMetadata = {
name: 'WordQ-Backups',
mimeType: 'application/vnd.google-apps.folder',
};
drive.files.create(
{
resource: fileMetadata,
fields: 'id',
},
function (err, file) {
if (err) {
// Handle error
console.error(err);
} else {
console.log('Folder Id: ', file.id);
}
}
);
}
我相信你的目标如下
- 您想将文件上载到根文件夹或创建的新文件夹
父项:[“手动输入的文件夹ID]”,
。通过此操作,将文件创建到根文件夹
模式2:
如果要创建新文件夹并将文件放入已创建的文件夹,请尝试以下修改。不幸的是,在您的脚本中,我不确定您的问题中createFolder()
中的drive
。因此,我无法理解您的createFolder()
问题。因此,在此模式中,文件夹是使用XMLHttpRequest
创建的
修改脚本:
函数createFile(accessToken,folderId){
log('文件应包含:'+文件内容);
让fileContent=document.querySelector('#content').value;
log('文件应包含:'+文件内容);
让file=newblob([fileContent],{type:'application/pdf'});
让元数据={
名称:“背景同步”+日期,
mimeType:'文本/普通',
父母:[folderId],//{
console.log(
“上载成功到GDrive:返回的文件ID-”+xhr.response.ID
);
gdResponse.innerHTML=
'上载的文件.文件响应ID:'+xhr.Response.ID;
};
发送(表格);
}
函数createFolder(accessToken){
const folderName=“样本”//{
const folderId=xhr.response.id;
console.log(folderId);
createFile(accessToken,folderId);
};
send(JSON.stringify(元数据));
}
//首先,运行此函数。
函数uploadFile(){
让accessToken=gapi.auth.getToken().access\u token;
createFolder(accessToken);
}
参考:
parents: ['Manually-entered-Folder-ID'],
parents: ['root'],
function createFile(accessToken, folderId) {
console.log('File Should Contain : ' + fileContent);
let fileContent = document.querySelector('#content').value;
console.log('File Should Contain : ' + fileContent);
let file = new Blob([fileContent], { type: 'application/pdf' });
let metadata = {
name: 'Background Sync ' + date,
mimeType: 'text/plain',
parents: [folderId], // <--- Modified
};
let form = new FormData();
form.append(
'metadata',
new Blob([JSON.stringify(metadata)], { type: 'application/json' })
);
form.append('file', file);
let xhr = new XMLHttpRequest();
xhr.open(
'post',
'https://www.googleapis.com/upload/drive/v3/files?uploadType=multipart&fields=id'
);
xhr.setRequestHeader('Authorization', 'Bearer ' + accessToken);
xhr.responseType = 'json';
xhr.onload = () => {
console.log(
'Upload Successful to GDrive: File ID Returned - ' + xhr.response.id
);
gdResponse.innerHTML =
'Uploaded File. File Response ID : ' + xhr.response.id;
};
xhr.send(form);
}
function createFolder(accessToken) {
const folderName = "sample"; // <--- Please set the folder name.
let metadata = {
name: folderName,
mimeType: 'application/vnd.google-apps.folder'
};
let xhr = new XMLHttpRequest();
xhr.open('post', 'https://www.googleapis.com/drive/v3/files?fields=id');
xhr.setRequestHeader('Authorization', 'Bearer ' + accessToken);
xhr.setRequestHeader('Content-Type', 'application/json');
xhr.responseType = 'json';
xhr.onload = () => {
const folderId = xhr.response.id;
console.log(folderId);
createFile(accessToken, folderId);
};
xhr.send(JSON.stringify(metadata));
}
// At first, this function is run.
function uploadFile() {
let accessToken = gapi.auth.getToken().access_token;
createFolder(accessToken);
}