0

テキストをchordproに変換するためのこのWebページがあります。今日、コンテンツはテキスト領域で変更されています。テキスト エディタを開いてそこにテキスト領域のコンテンツを貼り付ける必要がありますが、内容をディスクに直接保存できるように、ファイルの保存ダイアログを開いたほうがよいでしょう。HTML5ファイルセーバーを利用する方法を見つけようとしましたが、ほぼ完了したと思いますが、ファイル システム (fs) を提供する方法がわかりません。Chrome は fs が未定義であると言い続けます (これは私が提供していないためです)。

私はこれに正しい方法で取り組んでいますか?これが機能するために提供する必要があるファイルシステム以外に何かありますか?

これが私が得た距離です。HTML 入力は次のとおりです。

<button type="button" onclick=saveTextArea();>Convert</button>

Javascriptは次のとおりです。

function saveTextArea(fs) {
    "use strict";
    convertToChordpro(); // Converts text area value to chordpro format

    var textArea = document.getElementById('textArea');
    var artist = document.getElementById('artist').value;
    var title = document.getElementById('title').value;
    var fileName = (artist && title) ? artist + "-" + title + ".txt" : "artist-title.txt";
    fs.root.getFile(fileName, {create: true}, function(fileEntry) {
        fileEntry.createWriter(function(fileWriter) {
                fileWriter.onwrite = function(e) {
                    console.log('Write completed.');
                };

                fileWriter.onerror = function(e) {
                    console.log('Write failed: ' + e.toString());
                };

                var bb = new BlobBuilder();
                bb.append(textArea.value);

                fileWriter.write(bb.getBlob('text/plain'));
            }, onError);
    }, onError);
}
function onError() {}
window.requestFileSystem  = window.requestFileSystem || window.webkitRequestFileSystem;
window.requestFileSystem(TEMPORARY, 1024*1024, saveTextArea, onError);
4

1 に答える 1

1

このようなことをしてください

    var fs = window.requestFileSystem(TEM...);
    saveTextArea(fs);

- 編集 -

エラー ハンドラを定義します。

function onError(e) { console.log(e); }

初期化またはエラー ハンドラのいずれかを呼び出す必要があります。あなたの場合、エラーハンドラーが呼び出されます(初期化ハンドラーが呼び出されないため)。

しかし... w3c FileSystem API は、それが必要な場合、ファイル チューザーを提供しません。ストレージはローカルであり、ブラウザー サンドボックスの外部からはアクセスできません。FileSystem API はかなり実験的なもので、現在 Chrome でのみサポートされています。

おそらく、<input type="file"> を介して単純なファイルをアップロードし、データをサーバーに送信したいですか?

于 2013-02-09T16:08:07.843 に答える