Чтение файлов захвата изображений в PhoneGap - PullRequest
5 голосов
/ 31 октября 2011

Я работаю над приложением PhoneGap, которое захватывает изображения с помощью камеры и позже загружает их.В PhoneGap есть два режима работы камеры: необработанные данные в кодировке base64 или URI файла.

В самих документах указано:

Примечание. Качество изображения снимков, сделанных с использованиемкамера на более новых устройствах довольно хорошая.Кодирование таких изображений с использованием Base64 вызвало проблемы с памятью на некоторых из этих устройств (iPhone 4, BlackBerry Torch 9800).Поэтому настоятельно рекомендуется использовать FILE_URI в качестве «Camera.destinationType».

Поэтому я заинтересован в использовании опции FILE_URI.Это прекрасно работает, и вы даже можете показать изображения в тегах IMG.URL выглядит следующим образом:

file: //localhost/var/mobile/Applications/4FE4642B-944C-449BB-9BD6-1E442E47C7CE/tmp/photo_047.jpg

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

Код ошибки, который я получаю от readDataUrl: 1> FileError.NOT_FOUND_ERR = 1;

Любые идеикак я могу получить в файл?Я попытался просто получить доступ к последней части пути (photo_047.jpg) на основе другого примера, который видел, но безуспешно.

Ответы [ 4 ]

1 голос
/ 29 октября 2012

Ответ от jgarbers помог мне, но не решил проблему. Я понял, что камера хранит фотографии в папке Temp вместо папки Document. Установка временной локальной файловой системы позволила ей найти правильное местоположение для изображений с камеры.

window.requestFileSystem(LocalFileSystem.TEMPORARY, 0, ...
1 голос
/ 16 декабря 2011

Я только начинаю с PhoneGap, и, учитывая возраст этого вопроса, вы, возможно, уже нашли ответ, но я все равно попробую.

Во-первых, сможете ли вы использовать встроенный FileTransfer объект? В качестве аргумента используется файл : URI.

Если FileTransfer не будет работать для вас, и вам необходимо самостоятельно прочитать данные файла, вам понадобятся объекты PhoneGap File , например FileReader, как вы сказали. Но большинство из них ожидают, что для указания файла для работы будет использоваться простой путь, а не URI. Причина, по которой вы получаете NOT_FOUND_ERR, заключается в том, что он пытается открыть файл с именем file: / localhost / var ... .

Вот быстрая однострочная строка для извлечения части пути из вашего URI:

var path = /file:\/\/.*?(\/.*)/.exec(fileuri)[1];

Надеюсь, это поможет!

0 голосов
/ 07 января 2015

вы можете использовать плагин для передачи файлов для загрузки любого файла на сервер.

//// pass your file uri to the mediafie param
function uploadFile(mediaFile) {
    var ft = new FileTransfer();
    path = mediaFile.fullPath;
    name = mediaFile.name;
////your service method url
    var objUrl = http://example.com;


    ft.upload(path,
        objUrl,
        function (result) {
            alert("Success");


        },
        function (error) {
            alert('Error uploading file ' + path + ': ' + error.code);
        },
        { fileName: name });
}
0 голосов
/ 09 января 2014

...

window.requestFileSystem (LocalFileSystem.TEMPORARY, 0, ...

...

var path = /file://.*? (/.) /. Exec (fileuri) [1];

См. Выше ответы Джгарберса и Рика (решение успешно протестировано на iOs 7)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...