2

Я пытаюсь написать локальный файл в приложении Chrome.Chrome File File System. Не удается записать локальный файл

Проблема в том, что я не могу получить вызов fileEntry.createWriter. Когда я отлаживаю, все останавливается там, и на консоли не появляется ошибка.

chrome.fileSystem.chooseEntry({type: 'saveFile', suggestedName: 'myfile.html'}, function(fileEntry) { 
    fileEntry.createWriter(function(fileWriter) { 
     fileWriter.onwriteend = function(e) { 
     console.log('Write completed.'); 
     }; 

     fileWriter.onerror = function(e) { 
     console.log('Write failed: ' + e.toString()); 
     }; 
     fileWriter.write(new Blob([document.getElementById("HTMLFile").value], {type: 'text/plain'})); 
    }, errorHandler); 
    }); 

Chrome Ver: Версия 40.0.2214.28 бета (64-разрядная версия) ОС: OS X 10.10.1

+1

Используйте console.log для отображения некоторых промежуточных значений, например значений, переданных обратным вызовам selectEntry и createWriter. Это, несомненно, скажет вам, что случилось. Если вам нужна дополнительная помощь, разместите здесь небольшое, полное приложение, включая файл manifest.json. –

+0

Чтобы усилить комментарий Марка, в этом вопросе есть куча тревожных двусмысленностей. Нет такой вещи, как «Веб-приложение Chrome», и термин «Упакованное приложение» устарел. Эти терминологические ошибки делают файлы манифеста и файлов событий, а также журнал ошибок на странице событий, тем более важным для ответа на этот вопрос, так как очень вероятно, что вы на самом деле не создаете приложение для Chrome, иначе ваша ошибка смотрит на вас в лицо на консоли событий. – sowbug

+0

«Упакованное приложение» устарело? Не соответствует https://developer.chrome.com/extensions/management#type-ExtensionInfo –

ответ

1

У меня была аналогичная проблема. Вам необходимо определить аргумент errorHandler для вызова fileEntry.createWriter(). Я также думаю, что вам нужно поместить MIME-тип файла в text/html.

chrome.fileSystem.chooseEntry({type: 'saveFile', suggestedName:'myfile.html'}, function(fileEntry) { 
    fileEntry.createWriter(function(fileWriter) { 
     fileWriter.onwriteend = function(e) { 
     console.log('Write completed.'); 
     }; 

     fileWriter.onerror = function(e) { 
     console.log('Write failed: ' + e.toString()); 
     }; 
     fileWriter.write(new Blob([document.getElementById("HTMLFile").value], {type: 'text/html'})); 
    }, function(){console.warn("Your error message here");}); 
    });