我创建了一个谷歌文件选择器,用户可以选择现有文件或上传新文件。
我已经让它在用户可以选择或上传文件的地方工作。但是,如果用户希望上传文件,我想自己定义文件名。
这就是我目前所拥有的:
function createPicker() {
if (pickerApiLoaded && oauthToken) {
let picker = new google.picker.PickerBuilder().
enableFeature(google.picker.Feature.SUPPORT_TEAM_DRIVES).
addView(new google.picker.DocsView().
setEnableTeamDrives(true).
setIncludeFolders(true).
setParent("FOLDER-ID")
).
addView(new google.picker.DocsUploadView().
setParent("FOLDER-ID")
).
setOAuthToken(oauthToken).
setDeveloperKey(developerKey).
setCallback(pickerCallback).
hideTitleBar().
build();
picker.setVisible(true);
}
}
// A simple callback implementation.
function pickerCallback(data) {
let id = 'nothing';
if (data[google.picker.Response.ACTION] === google.picker.Action.PICKED) {
let doc = data[google.picker.Response.DOCUMENTS][0];
id = doc[google.picker.Document.ID];
console.log(doc);
}
let message = 'You picked: ' + id;
document.getElementById('result').innerHTML = message;
}
我查看了文档here,但我看不到任何内容。
我不知道这是否可能。
答案 0 :(得分:0)
相反,如果用户决定上传文件,我必须手动更新名称。
// A simple callback implementation.
function pickerCallback(data) {
console.log("Data", data);
let doc = 'nothing';
if (data.action === "picked") {
doc = data.docs[0];
console.log("Doc", doc);
}
let message = `You picked: ${doc.id}`;
document.getElementById('result').innerHTML = message;
if (data.viewToken[0] === "upload") {
updateName(doc, "888");
}
}
// Update the name of the file
function updateName(doc, newName) {
newName += "." + doc.name.split(".")[1];
let load = "https://content.googleapis.com/discovery/v1/apis/drive/v3/rest";
gapi.client.load(load)
.then(function () {
return gapi.client.drive.files.update({
"fileId": doc.id,
"supportsTeamDrives": "true",
"resource": {
"name": newName
}
})
.then(function(response) {
// Handle the results here (response.result has the parsed body).
console.log("Response", response);
},
function(err) {
console.error("Execute error", err);
}
);
});
}