0

クラウドとの間でテキストファイルを開いたり保存したりするためにインクファイルピッカーを使用する webapp をプログラムします。モバイルブラウザで、次の方法でファイルを開くと:

filepicker.pick({extension: '.txt'},
    function(FPFile) {
        filepicker.read(FPFile, function(data) {
            // Open file
        });
    });

ブラウザで「ポップアップをブロックする」オプションが有効になっているかどうかに関係なく、問題はありません。しかし、次の方法でファイルを保存すると:

        filepicker.store(
        mycontent64,
        {base64decode: true, mimetype: 'text/plain'},
        function(InkBlob) {
            filepicker.exportFile(
                InkBlob,
                {suggestedFilename:"myfile.txt",extension: ".txt"},
            function(InkBlob) {
            // ******* Save file
            },
            function(FPError) {
                console.log(FPError.toString());
            });
            },
        function(FPError) {
                console.log(FPError.toString());
        }
    );

ブラウザで「ブロックポップアップ」オプションが無効になっている場合にのみ機能します(iPadまたはAndroidストックブラウザのSafari、またはGoogle Chrome Android ...)。アクティブ化されている場合、ブラウザは新しいタブでエクスポートダイアログを開くことを拒否し、コンソールに「FPError 131」が表示されます...

ユーザーにこのオプションを無効にするように指示することはできません。

トリックを行う回避策はありますか?

ありがとう !

4

1 に答える 1

0

いくつかの回避策は、同じページのファイルピッカー内でファイルピッカー ダイアログを開くことです。モバイル デバイスの場合は、filepicker.exportFile オプションを変更します。

filepicker.store(
    mycontent64,
    {base64decode: true, mimetype: 'text/plain'},
    function(InkBlob) {
        filepicker.exportFile(
            InkBlob,
            {
               suggestedFilename:"myfile.txt",
               extension: ".txt"
               container: "yourIframeId",
               mobile: true
            },
        function(InkBlob) {
        // ******* Save file
        },
        function(FPError) {
            console.log(FPError.toString());
        });
        },
    function(FPError) {
            console.log(FPError.toString());
    }
);

「yourIframeId」は、Web サイト内の iFrame タグの ID です。'mobile: true' はモバイルを強制します - ダイアログのレスポンシブ バージョン。ドキュメントを確認してください: https://developers.filepicker.io/docs/web/#export

于 2014-09-10T08:37:07.853 に答える