2017-03-13 4 views
5

Problème:erreur d'URL non pris en charge pour une cdvfile: //

Dans mon application, je veux accéder à une image par cordova wkwebview. L'élément HTML ressemble à ceci. Pendant le chargement, l'erreur "Impossible de charger la ressource: URL non prise en charge" s'affiche pendant le chargement de cette ressource. Je travaille avec iOS 10.2.

choses vérifiées/essayé:

Si la liste des fichiers présents dans le « cordova.file.dataDirectory » sous le dossier « MonDossier » est cochée, je vois le « file.jpg » présente. Son URL native est file: ///var/mobile/Containers/Data/Application/app_id/Library/NoCloud/MyFolder/file.jpg.

J'ai ajouté "img-src 'self' cdvfile:" à la politique de sécurité du contenu.

J'ai ajouté suivant dans le config.xml

<access origin="cdvfile://*" /> 
<allow-navigation href="cdvfile://*" /> 
<allow-intent href="cdvfile://*" /> 
<preference name="iosPersistentFileLocation" value="Compatibility" /> 
<preference name="iosExtraFilesystems" value="library,library-nosync,documents,documents-nosync,cache,bundle,root" /> 

Il n'y a pas de caractères spéciaux (non-ASCII) dans l'URL comme mentionné dans les discussions relatives à cette erreur. Quoi d'autre pourrait être la raison de "URL non supportée" ?.

La façon dont j'accède à cdvfile: // chemin incorrect?

Mise à jour

Je suis tombé sur un lien (oublié de saisir que) en disant le WebView a besoin chemin relatif et donc cdvfile: // ne fonctionnerait pas. J'ai essayé de changer la source d'image en un chemin relatif en la changeant en "../../../../../../../../..//var/mobile/Containers/ Data/Application/app-id/Bibliothèque/NoCloud/MyFolder/file.jpg "et je pourrais maintenant voir une nouvelle erreur -" Impossible de charger la ressource: L'opération n'a pas pu être complétée Opération non autorisée "

I pourrait faire fonctionner l'image en "lisant" le contenu du fichier et en transmettant les données base64 comme source d'image. Mais ce n'est pas comme ça que ça devrait être, n'est-ce pas?

+0

oui, l'accès à cdvfile: // chemin est une pratique incorrecte. parce que le navigateur ne comprend pas cdvfile: // protocole. –

+0

Voulez-vous dire que la section https://cordova.apache.org/docs/fr/latest/reference/cordova-plugin-file/#cdvfile-protocol est incorrecte? – Amruta

+0

Quelle est la bonne façon d'y parvenir? Dois-je lire les données dans le fichier et l'affecter à l'image en utilisant des données: //? – Amruta

Répondre

0

Si vous utilisez WKWebView, il n'y a qu'une option que vous configurer un serveur web local http, puis y accéder via http://localhost ...

Malheureusement "cdvfile" ne fonctionne pour WKWebView.