0

我有这个网页用于将文本转换为 chordpro。今天在文本区修改内容;强迫我打开一个文本编辑器,然后将文本区域内容粘贴到那里,但我宁愿打开一个保存文件对话框,以便将内容直接保存到磁盘。我试图弄清楚如何使用 HTML5 Filesaver,我想我快到了,但我不知道如何提供文件系统(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...);
    保存文本区域(fs);

- 编辑 -

定义错误处理程序:

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

必须调用初始化或错误处理程序。在您的情况下,将调用错误处理程序(因为没有初始化处理程序)。

但是... w3c FileSystem API 不提供文件选择器,如果这是您想要的。存储是本地的,不能从浏览器沙箱外部访问。FileSystem API 是相当实验性的,目前只有 Chrome 支持。

也许您想要的是通过 <input type="file"> 进行简单的文件上传并将数据发布到您的服务器?

于 2013-02-09T16:08:07.843 回答