Сохраните файл изображения в SDCard в Firefox OS
Я пытаюсь сохранить изображение в SDCard. Я следую за этой документацией.
$('.btnSave').on('click', function () {
var imageRawData = canvas.toDataURL("image/png") ;
var sdcard = navigator.getDeviceStorage("sdcard");
var file = new Blob([imageRawData], { type: "image/png" });
var request = sdcard.addNamed(file, "FilertedImage.png");
request.onsuccess = function () {
var name = this.result;
console.log('File "' + name + '" successfully wrote on the sdcard storage area');
}
request.onerror = function (e) {
console.log('Unable to write the file: ' + e.target.error.name);
}
});
В документации я обнаружил, что "фотографии принимаются только Blob с допустимым типом изображения MIME". Так как я могу конвертировать imageRawData
действительный тип изображения MIME с использованием Ja vaScript.
2 ответа
Решение
Я сделал это следующим образом - Сохраняет, а затем делится:
function saveAndSend(blob) {
var sdcard = navigator.getDeviceStorage("sdcard");
var request = sdcard.addNamed(blob, "test/mycanvas.png");
//could just share the blob instead of saving
request.onsuccess = function () {
var sharingImage = new MozActivity({
name: "share",
data: {
type: "image/*",
number: 1,
blobs: [blob],
filenames: ["mycanvas.png"],
filepaths: ["test/mycanvas.png"]
}
});
}
// An error could occur if a file with the same name already exist
request.onerror = function () {
alert('Unable to write the file: ' + this.error.name);
}
}
var cnv = document.getElementById('myCanvas');
cnv.toBlob(function (blob) {
//var sdcard = navigator.getDeviceStorage("pictures");
var sdcard = navigator.getDeviceStorage("sdcard");
var request = sdcard.delete("test/mycanvas.png");
//try to delete in case it exists
request.onsuccess = function () {
saveAndSend(blob);
}
request.onerror = function () {
saveAndSend(blob);
}
});
Ваше приложение также должно убедиться, что оно имеет соответствующие разрешения на хранение устройства.
Смотрите пример: https://github.com/mozilla-b2g/gaia/blob/master/dev_apps/ds-test/manifest.webapp. ds-test - тестовое приложение, которое я написал для тестирования вещей в памяти устройства.