Canvas DataURL для изображения с filePath

Я создаю мобильное приложение с Cordova/PhoneGap и IonicFramework (используя AngularJS). В приложении пользователь может нарисовать свою подпись на холсте (https://github.com/szimek/signature_pad< /а>). В настоящее время холст сохраняется как DataURL:

data:image/png;base64,iVBORw0KGgoAAAANS ...

Когда подпись сохранена, я хочу отправить изображение на сервер с помощью плагина FileTransfer от Cordova (http://docs.phonegap.com/en/3.1.0/cordova_file_file.md.html#FileTransfer).

Я уже делаю это для обычных изображений, снятых с камеры, и это прекрасно работает. Это моя функция загрузки:

function uploadPicture(fileURL) {

        var win = function (result) {
            console.log('Success!');
        }

        var fail = function (err) {
            console.log('Fail!');
        }

        var options = new FileUploadOptions();
        options.fileKey = 'file';
        options.fileName = fileURL.substr(fileURL.lastIndexOf('/') + 1);
        options.mimeType = 'image/jpeg';
        options.chunkedMode = true;
        options.params = {};

        var ft = new FileTransfer();
        ft.upload(fileURL, encodeURI('http://example.com/upload/'), win, fail, options);
    }

Теперь, как вы видите, fileURL — это полный путь к файлу. Я понял, что когда я каким-то образом преобразую dataURL в фактическое изображение, я могу использовать плагин (не уверен на 100%, что это исправит).

Это возможно как-то? Я много искал, но не нашел ничего полезного. В большинстве примеров речь идет об отправке URL-адреса данных на сервер и предоставлении серверу возможности обрабатывать его, но я этого не ищу.

Любые мысли/идеи/помощь в этом? Я надеюсь, что то, что я хочу, возможно!


person user3050534    schedule 08.06.2015    source источник


Ответы (1)


Вам нужно будет преобразовать base64 в изображение на вашем устройстве. Затем загрузите его. Однако лучше просто отправить base64 на сервер и позволить ему обработать, чтобы сэкономить место и время на стороне клиента.

person Abhishek Jain    schedule 08.06.2015
comment
Да, я понимаю, но я действительно хочу сделать это на стороне клиента. Я также в настоящее время сохраняю dataURL в LocalStorage... было бы неплохо также предотвратить это с помощью этого. - person user3050534; 08.06.2015