2015-09-13 1 views
3

У меня возникли проблемы с отображением изображений, загруженных в файл cordova.file.dataDirectory в приложении с угловым/ионным/кордовым.Почему мое приложение IOS отклоняет cdvfile: // и файл: /// ссылки?

Я использую файл cordova-plugin, и я могу загрузить файлы и извлечь URLS с использованием .toInternalURL() и/или .toURL(). Однако просмотр углового списка отклоняет их. Я использую WkWebView для Ios, и мой код отлично работает на Android (используя .toInternalURL()). Я включил оба cdvfile: // * и файл: /// * в конфиг и в мета-контент-политику безопасности ...

Я добавил скриншоты Вот скриншот консоли для ссылок, генерируемых .toInternalURL()

Вот скриншот для ссылок, генерируемых .toURL():

Вот им политики безопасности с помощью:

<meta http-equiv="Content-Security-Policy" content="default-src * data: cdvfile://* content://* file:///*; style-src 'self' 'unsafe-inline' *; script-src 'self' 'unsafe-inline' 'unsafe-eval' *; media-src *"> 

ответ

5

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

Чтобы использовать сохраненный путь изображения в атрибуте src, не используйте cdvfile: // или файл: ///. Вместо того, чтобы создать путь, который выглядит следующим образом:

http://localhost:12344/Library/NoCloud/ho_tylw7Ygc.jpg

PREPEND «http://localhost:12344/Library/NoCloud» в entry.fullPath и вы все сделали, чтобы указать на DataDirectory вашего приложения.

+1

Спасибо за информацию! Я сохраняю свои изображения в 'cordova.file.cacheDirectory', поэтому мои ссылки похожи на'./Library/Caches/filename.jpg'. –

+0

Эй, у меня такая же проблема, но с видео, и я не могу заставить ее работать. Не могли бы вы помочь мне? Это то, что я получаю как абсолютный URL: 'файл: /// var/mobile/Containers/Data/Application/A313B954-55C5-49F1-801F-5AF519EA4E8E/Library/files/video/High-Knees.mp4'. И эти комбинации, которые я пробовал (не из них работал): 'http: // localhost: 12344/Library/files/video/High-Knees.mp4' ' http: // localhost: 12344/video/High-Knees.mp4' 'http: // localhost: 12344/var/mobile/Контейнеры/Данные/Приложение/A313B954-55C5-49F1-801F-5AF519EA4E8E/Библиотека/файлы/видео/High-Knees.mp4' – hyperN

+0

Let я понимаю это правильно ... Мне нужен HTTP-сервер в моем приложении, чтобы это работало? – DarkNeuron

1

Чтобы сделать его работу я должен был сделать следующий трюк:

  1. я добавил суффикс «локальной файловой системы» в URL http://localhost:potr/local-filesystem/
  2. Затем я добавил весь путь, который я должен был после того, как файл:// напр. http://localhost/:port/local-fileystem//Users/ ...
  3. Но для того, чтобы все сработало, если вы посмотрите на document.location.href, вы увидите параметр cdvToken. Он должен быть добавлен к URL-адресу, который вы испекли как? CdvToken = blah-blah-blah

Только после этого вещь начала работать. Обратите внимание, что я использую «local-webserver» npm pacakge как кордову-labs-local-webserver (версия 1.0.0-dev.) В других версиях все может быть разным.