2

I have a chrome packaged app that uses the chrome.fileSystem API to access a user's directory. It displays all files in the directory and the user can open and edit text files in the app. It displays all files even not-text files (e.g. images) and I want that the user can click on these, too, but they should open in the Chrome OS standard image viewer.

Is there a chrome API to do this, like a function that I can pass the URL of the file or the file entry to, and then the system performs the standard operation?

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 に答える