Google 选择器未按文件扩展名选择

Google Picker not selecting by file extension

给定 Drive 中具有(任意)扩展名 *.abc 的文件,此代码...

gapi.load("picker", { "callback": function () {
    if (!picker) {
        var view = new google.picker.DocsView(google.picker.ViewId.DOCS);

        view.setMimeTypes("application/vnd.google.drive.ext-type.abc");

        view.setMode(google.picker.DocsViewMode.LIST);
        picker = new google.picker.PickerBuilder();
        picker.setTitle(TEXT.PICKER_PROMPT);
        picker.setAppId(CONST.APP_ID);
        picker.addView(view);
        picker.setOAuthToken(session.OAuthToken.access_token);
        picker.setCallback(pickerCallback);
        picker.setInitialView(view);
    };
    picker.build().setVisible(true);
));

...在驱动器中找不到任何现有的 'abc' 文件。 这些文件是 mime 类型 text/xml,下面一行确实找到了它们:

view.setMimeTypes("text/xml");

为什么按扩展搜索不起作用?

对于那些从 Google 发现这个问题的人来说,这个问题并不像听起来那么愚蠢 - 中每个扩展名的(伪)mime 类型Drive 世界,但它不能以这种方式使用,至少不能在 Picker 中使用。

一个可行的(即用户友好的)解决方案是在视图上使用查询:

view.setQuery("*.abc");

完整性:

gapi.load("picker", { "callback": function () {
    if (!picker) {
        var view = new google.picker.DocsView(google.picker.ViewId.DOCS);

        view.setMimeTypes("text/xml");
        view.setMode(google.picker.DocsViewMode.LIST);
        view.setQuery("*.abc");

        picker = new google.picker.PickerBuilder();
        picker.setTitle(TEXT.PICKER_PROMPT);
        picker.setAppId(CONST.APP_ID);
        picker.addView(view);
        picker.setOAuthToken(session.OAuthToken.access_token);
        picker.setCallback(pickerCallback);
        picker.setInitialView(view);
    };
    picker.build().setVisible(true);
));

添加到 HeyHeyJC 的回答中,如果您想使用多个,可以使用双管道 (||) 分隔每个文件扩展名。

例如,view.setQuery("*.abc || *.def || *.ghi");