Chrome应用程序 - 让系统打开一个文件

时间:2014-09-27 10:17:23

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

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

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

1 个答案:

答案 0 :(得分:2)

你的直接问题的答案是否定的。相反,你可以做以下事情之一:

  1. 获取文件名的扩展名,并根据该文件正确显示该文件。

  2. 致电chrome.mediaGalleries.getMetadata确定媒体类型,并根据该媒体类型进行操作。

  3. 以下代码取自我为我的书放在一起的示例应用程序,它不处理一般情况,因为它处理的文件只是图像,视频或音频,但它提供了一些指导如何使用此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. (未尝试,所以我猜一点。)将URL.createObjectURL创建的对象网址直接传递到应用窗口中的另一个窗口或网页视图。
    2. 另请注意,您无法从Chrome应用内访问Chrome OS标准图片查看器。