-
Bonjour j'ai un soucis lorsque je veux télécharger une image depuis un serveur sur un appareil android. L'image ne se télécharge pas du tout. Le même code fonction sur windows et non sur android.
J'utilise QNetworkAccessMAnager et QNetworkReply pour télécharge le fichier depuis une url.Merci de vos réponse.
-
Bonjour,
Vous devriez montrer le code que vous utiliser. La première chose qui vient en tête est que vous essayer de stocker le fichier à un endroit qui est en lecture seule.
-
QNetworkAccessManager managerPM; QNetworkReply *replyFirm; replyFirm = managerPM.get(QNetworkRequest(QUrl("https://www.google.com/imgres?imgurl=https%3A%2F%2Fstatic.neris-assets.com%2Fimages%2Ftest-header-3.svg&imgrefurl=https%3A%2F%2Fwww.16personalities.com%2Ffr%2Ftest-de-personnalite&docid=b2EKdwgohwnrNM&tbnid=LLSqc5L4G3MOTM%3A&vet=10ahUKEwjUpeSFmu_mAhWHXsAKHYnoBwUQMwhPKAAwAA..i&w=800&h=800&itg=1&bih=953&biw=1280&q=image%20test&ved=0ahUKEwjUpeSFmu_mAhWHXsAKHYnoBwUQMwhPKAAwAA&iact=mrc&uact=8"))); QEventLoop eventLoop; QObject::connect(replyFirm, SIGNAL(finished()), &eventLoop, SLOT(quit())); eventLoop.exec(); QString path = "/sdcard/Download/sojadis_wallpaper_tablette1.png"; QFile filemanquant(path); if ( filemanquant.open(QIODevice::ReadWrite) ) { QMessageBox mess; mess.setText(path); mess.exec(); filemanquant.write(replyFirm->readAll()); filemanquant.close(); }
-
Il vaut mieux utiliser QStandardPaths pour obtenir le chemin adéquat pour le stockage des fichiers.
Il n'est pas certain que le chemin que vous avez codé en dur existe et ni qu'il soit accessible par votre application.
-
J'ai bien testé les histoires d'emplacement de fichier, il n'y a aucun soucis de se coté la.
Par contre j'ai remarquée que lorsque j'utilisais une requête autres que "https" je récupères bien le fichier voulu.@PAD49 Bonjour, pour des raisons de licence, les libraires OpenSSL ne sont pas fournis avec les binaires Android.
Pour ajouter les libraries OpenSSL, il faut suivre la procédure décrite ici ==> https://doc.qt.io/qt-5/android-openssl-support.html -
Juste une petite précision, ce n'est pas une question de license mais de restrictions de distribution dans certain pays par rapport à l'usage de la cryptographie. C'est au développeur de faire les démarches nécessaires.