Я пытаюсь получить данные (включая изображения/ссылки/etc), введенные в текстовый редактор jquery, сохраненный с использованием файловой системы chrome. Я могу сохранить как один тип файла (скажем, text/plain), но не могу понять, как сохранить изображения и текст в файловой системе одновременно. Я по сути хочу, чтобы мой блог «post» был сохранен в локальной файловой системе с песочницей chrome для последующего извлечения вместо сервера или публикации на веб-странице ... любых идей?Сохранение сообщения блога в chrome filesystem blob
0
A
ответ
0
Поскольку вы пытаетесь сохранить текст, а также изображения, изображения и ссылки, вы должны сохранить сообщение в блоге как файл html. Предполагая, что ваш текстовый редактор jQuery имеет класс .jquery-textEditor
, кнопку сохранения с классом .save
и открытую кнопку с классом .open
, вот как вам следует открывать/сохранять этот «пост в блоге».
//save
var dbName = 'text-vanillajs';
var savedFileEntry, fileEntry;
function getText(callback) {
chrome.storage.local.get(dbName, function(storedData) {
var text = $('.jquery-textEditor').html();
callback(text);
}.bind(this));
}
function exportToFileEntry(fileEntry) {
savedFileEntry = fileEntry;
getText(function(contents) {
fileEntry.createWriter(function(fileWriter) {
var truncated = false;
var blob = new Blob([contents]);
fileWriter.onwriteend = function(e) {
if (!truncated) {
truncated = true;
this.truncate(blob.size);
return;
}
};
fileWriter.write(blob);
});
});
}
function ExportToDisk() {
chrome.fileSystem.chooseEntry({
type: 'saveFile',
suggestedName: 'untitled.html',
accepts: [{
description: 'HTML File',
extensions: ['html']
}],
acceptsAllTypes: true
}, exportToFileEntry);
}
$('.save').click(function() {
if (savedFileEntry) {
exportToFileEntry(savedFileEntry);
} else {
ExportToDisk();
}
});
//open
$('.open').click(function(){
chrome.fileSystem.chooseEntry({
type: 'openFile',
accepts: [{
extensions: ['html']
}]
}, function(fileEntry) {
if (!fileEntry) {
return;
}
fileEntry.file(function(file) {
var reader = new FileReader();
reader.onloadend = function(e) {
var result = e.target.result;
$('.jquery-textEditor').html(result);
};
reader.readAsText(file);
});
});
});