JS Google Picker上的文件上传更改文件名

时间:2018-03-29 11:03:59

标签: javascript google-api google-picker

我创建了一个谷歌文件选择器,用户可以选择现有文件或上传新文件。

我已经让它在用户可以选择或上传文件的地方工作。但是,如果用户希望上传文件,我想自己定义文件名。

这就是我目前所拥有的:

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,但我看不到任何内容。

我不知道这是否可能。

1 个答案:

答案 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);
                    }
                );
            });
    }