2014-02-01 1 views
0

У меня есть мобильное приложение jQuery (сборка телефонных звонков). У меня есть функция, которая получит uri изображения из фотогалереи устройства. Я храню uri как строку в локальном хранилище, поэтому при следующем открытии страницы изображение отображается с помощью uri. Все это прекрасно работает (я не получаю Data-UrI изображения, потому что я не хочу использовать локальное хранилище, и я, конечно, не хочу загружать изображения на сервер из-за того, что приложение используется в школа (проблемы с приватностью), но на устройстве все в порядке. Все работает до тех пор, пока я не обновляю приложение. Когда обновление установлено, URI к изображению меняется. Как я могу получить статический URI для выбранного изображения. Вот код, я использую, чтобы получить изображение из галереи .:imageURI меняется после обновления IOS приложения

// JavaScript Document //Get Picture stuff 
    navigator.camera.getPicture(onPhotoURISuccess, onFail, { quality: 50, destinationType: 
    destinationType.FILE_URI, sourceType:Camera.PictureSourceType.SAVEDPHOTOALBUM}); 

    var pictureSource; // picture source 
    var destinationType; // sets the format of returned value 
    pictureSource=navigator.camera.PictureSourceType; 
    destinationType=navigator.camera.DestinationType; 

    function onPhotoURISuccess(imageURI) { 
    // Uncomment to view the image file URI 
    console.log(imageURI); 
    localStorage.setItem("piclink", imageURI) 

    // Get image handle 
    var largeImage = document.getElementById('largeImage'); 

    // Unhide image elements 
    largeImage.style.display = 'block'; 

    // Show the captured photo 
    // The inline CSS rules are used to resize the image 
    largeImage.src = imageURI; 
    } 
    // Called if something bad happens. 
    function onFail(message) {alert('Failed because: ' + message); 
    } 

следует отметить, что обновление я применяю не вносит никаких изменений в код камеры. Все данные остаются в LocalStorage штрафа, я могу см. в консоли, что он сохраняет и вызывает URI без проблем, но в пути URI после обновления происходит изменение пути (огромная строка цифр и тире) , bTW, нет проблем с версией Android. Любая помощь была бы принята с благодарностью

ответ

1

Я понимаю, что изображениеURI, которое вы сохраняете на localStorage, является просто временным файлом cdv_ *, который обрабатывается плагином камеры CDV. Как правильно указал user2603892, кажется, что ваша проблема связана с тем, что новый идентификатор местоположения приложения применяется к обновлениям. Тем не менее, может быть несколько других проблем, которые следует учитывать ... плагин камеры последовательно именет временные файлы, выбранные в библиотеке или сделанные как фотографии. cdv_photo_001.jpg, cdv_photo_002.jpg и т. д. Это продолжается до тех пор, пока вы не выполните функцию camera.cleanup(), которая удалит файлы cdv_ *.

Плагин хранит эти файлы в папке/tmp с корнем приложения. Очевидно, что это не будет скопировано iOS при обновлении.

Пример из симулятора: imageURI = Файл: ///Users/xxxxxxx/Library/Application%20Support/iPhone%20Simulator/7.0.3/Applications/B7B2005C-C116-4BCB-897D-CD46672123C3/tmp/cdv_photo_001.jpg

Предполагалось бы переименовать и сохранить файл (а не имя файла) в 1) папку «Документы» или 2) папку «Поддержка приложений», а затем ссылаться на нее для дальнейшего использования.

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

+0

Спасибо. Когда вы говорите «1» папку «Документы» или 2) папку «Поддержка приложений», а затем ссылаетесь на нее для использования в будущем ». Я не уверен, что понимаю разрешения. Я думал, что ваше приложение в основном не имеет разрешения на хранение. Или, если я сохраняю изображение в папке doc пользователей, я в основном создаю копию изображения в их ролике? Извините, новичок в этом. – Cory

+0

У вашего приложения есть разрешение на хранение в его песочнице. Возможно, поиск в CDVFile-плагине был бы полезен. Кроме того, папка «Документы» является стандартным «общим» хранилищем на устройстве, которое также синхронизируется с iCloud. И да, вы бы сохранили копию выбранного изображения из своего рулона на устройстве. Таким образом, у вас будет фиксированный URI под вашим контролем (например, обновите его, когда захотите), а также позволит вам очистить папку tmp плагина камеры, если вы этого еще не сделали, поскольку она может стать довольно большой. – gro

+0

Я думаю, что это может решить его! спасибо – Cory

0

Я знаю, что это старый пост, но я думал поделиться своими выводами в надежде, что это поможет кому-то еще. Я испытываю такую ​​же проблему в приложении, которое должно хранить изображения локально, не загружая их на сервер. Похоже, что проблема возникает из-за ITunes устанавливает обновление в новом каталоге приложения, как указано в iOS App Programming Guide

Файлы, сохраненные во время обновления приложений Когда пользователь загружает обновления приложения, ITunes устанавливает обновление в новом приложении каталог. Затем он удаляет файлы данных пользователя из старой установки в новый каталог приложений перед удалением старой установки. Файлы в следующих каталогах гарантированно будут сохранены в процессе обновления:

<Application_Home>/Documents 
<Application_Home>/Library 

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

как обсуждалось Here.

«Огромная строка цифр и тире», о которых вы упомянули в своем посте, - это каталог приложений. Это изменяется при каждом обновлении, и поэтому сохраненный URI будет отличаться от текущего URI после обновления.

Я все еще ищу работу, но еще ничего не смог найти.

+0

Благодарим за обновление - да, это своего рода боль, так как нет необходимости в изображениях, которые мое приложение использует для загрузки на сервер. Фактически, поскольку приложение используется в школах, мы не хотим, чтобы фотографии покидали камеру. Надеюсь, что найдется работа. – Cory

 Смежные вопросы

  • Нет связанных вопросов^_^