Сохраните файл изображения в 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 - тестовое приложение, которое я написал для тестирования вещей в памяти устройства.

Другие вопросы по тегам