2

従業員が外出先でチケットを追跡するために使用するアプリケーションを開発しています。当社のチケットには、さまざまなファイル タイプの添付ファイルが保存されている場合があります。

それらの多くは、ソフトウェアのバグのテキスト ファイルまたは画像であり、外出先でチケットをチェックアウトするときにチケットに不可欠です。

Javascript で、Web ブラウザに「このファイルを何で開きますか?」というメッセージをユーザーに表示させるにはどうすればよいですか? ダイアログ?次のようになります。

iPhone のダイアログでファイルを開く

これが Javascript で可能かどうかさえわかりませんが、もしそうなら、本当に私たちを大いに助けてくれるでしょう

Javascriptで画像を直接表示できることは承知していますが、ファイルをデバイスに任せて、正しいプログラムで開くことを処理させたいと思います(ファイルタイプが画像ではない場合)。

ああ、この種の機能を提供する場合に備えて、アプリケーションに Sencha Touch を使用しています (ただし、ドキュメントには見つかりませんでした)。

4

1 に答える 1

2

アプリで開くには:

  • Info-plist ファイルを選択します
  • plistファイルを右クリック
  • …として開き、ソースコードを選択します
  • この xml コードをファイルのどこかに貼り付けます (この例では、バンドル名の下に配置します)。

<key>CFBundleDocumentTypes</key>
<array>
    <dict>
        <key>CFBundleTypeName</key>
        <string>supportedExtensions</string>
        <key>CFBundleTypeRole</key>
        <string>Viewer</string>
        <key>LSHandlerRank</key>
        <string>Alternate</string>
        <key>LSIsAppleDefaultForType</key>
        <true/>
        <key>LSItemContentTypes</key>
        <array>
            <string>public.comma-separated-values-text</string>
        </array>
    </dict>
</array>
  • アプリ デリゲート ファイルに移動し、次の関数を実装します。

-(BOOL) application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation
{
    // this url contain the -> your file url
}

覚えておいてください: アプリのメモリの扱いはあなた次第です。ファイルはアプリケーション ドキュメント ディレクトリ スペースにコピーされます。管理する必要があります。ファイルが不要になった場合は、アプリケーションでファイルを削除する必要があります。

JS でファイルを読み取る:

JavaScript で以下を実装します。

window.requestFileSystem(LocalFileSystem.PERSISTENT, 0, gotFS, fail);

function gotFS(fileSystem) {
    fileSystem.root.getFile("exportBHC.csv", {create: true}, gotFileEntry, fail);
}

function gotFileEntry(fileEntry) {
    fileEntry.file(gotFile, fail);
}

function gotFile(file){
    readAsText(file);
}

function readAsText(file) {
    var reader = new FileReader();

    reader.onloadend = function(evt) {
        var sqlQuery = {};
        var results = evt.target.result;
}
于 2013-01-10T06:23:40.140 に答える