javascript - Chrome App - 让系统打开文件

标签 javascript google-chrome google-chrome-app html5-filesystem google-chrome-os

我有一个 Chrome 打包应用程序,它使用 chrome.fileSystem API 来访问用户的目录。它显示目录中的所有文件,用户可以在应用程序中打开和编辑文本文件。 它显示所有文件,甚至非文本文件(例如图像),我希望用户也可以单击这些文件,但它们应该在 Chrome 操作系统标准图像查看器中打开。

有没有一个 chrome API 可以做到这一点,比如一个函数,我可以将文件的 URL 或文件条目传递给它,然后系统执行标准操作?

最佳答案

您直接问题的答案是否定的。相反,您可以执行以下操作之一:

  1. 获取文件名的扩展名,并根据该扩展名适本地显示文件。

  2. 调用 chrome.mediaGalleries.getMetadata 来确定媒体类型,并据此执行操作。

以下代码取 self 为我的书编写的示例应用程序,不能处理一般情况,因为它处理的文件只是图像、视频或音频,但它提供了一些有关如何处理的指导使用此API:

chrome.mediaGalleries.getMetadata(file, {},
    function (metadata) {
        if (metadata && metadata.mimeType) {
            var element;
            var mediaType = metadata.mimeType.split('/')[0];
            var elementName = mediaType === 'image' ? 'img' : mediaType;
            element = document.createElement(elementName);
            element.setAttribute("controls", "controls");
            viewDiv.appendChild(element);
            element.style['max-width'] = '700px';
            element.style['max-height'] = '700px';
            element.src = URL.createObjectURL(file);
        }
    }
);
  • (没有尝试过,所以我猜测了一下。)将 URL.createObjectURL 创建的对象 URL 直接传递到另一个窗口或应用窗口中的 Web View 。
  • 另请注意,您无法从 Chrome 应用内访问所谓的 Chrome 操作系统标准图像查看器。

    关于javascript - Chrome App - 让系统打开文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26073609/

    相关文章:

    javascript - HTML5 应用程序 - 在哪里存储数据?

    javascript - 播种时未找到 "entity"的元数据

    google-chrome - 如何处理 Chrome Apps 中的自签名证书?

    javascript - 如何将具有键和值的对象分成两个数组

    c# - 运行 selenium ui 测试时如何填充 siteminder "authentication required"chrome 弹出窗口

    javascript - 如何在 Chrome 中复制监视的 javascript 变量?

    javascript - 内容安全策略不从本地主机加载文件

    dart - dart中的Google Cloud Messaging

    javascript - Jquery 自动完成不附加

    javascript - 简化多切换 div