2

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

是否有 chrome API 可以执行此操作,例如我可以将文件的 URL 或文件条目传递给的函数,然后系统执行标准操作?

4

1 回答 1

2

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

  1. 取文件名的扩展名,并据此适当地显示文件。

  2. 调用chrome.mediaGalleries.getMetadata以确定媒体类型,并以此为基础采取行动。

以下代码取自我为本书编写的示例应用程序,它不处理一般情况,因为它处理的文件只是图像、视频或音频,但它提供了有关此 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);
        }
    }
);
  1. (没有尝试过,所以我猜了一下。)将创建的对象 URLURL.createObjectURL直接传递到另一个窗口或应用程序窗口中的 web 视图。

另请注意,您无法从 Chrome 应用程序中访问所谓的 Chrome OS 标准图像查看器。

于 2014-09-27T15:31:36.203 回答