Je voudrais envoyer des images via un programme écrit en C + +. - OK Cela fonctionne, mais je voudrais envoyer les images de transporteur préchargé à un char variable (vous savez ce que je veux dire? Tout d'abord, je charge les images dans une variable, puis envoyer la variable), parce que maintenant je devez spécifier le chemin de l'image sur un disque. Je voulais écrire ce programme en C++ en utilisant la bibliothèque curl, pas via exe. extension. J'ai aussi trouvé un tel programme (qui a été modifié par moi un peu)Envoyer un fichier de la mémoire (plutôt que du disque) via HTTP en utilisant libcurl
Répondre
Lire la documentation curl_formadd
: http://curl.haxx.se/libcurl/c/curl_formadd.html
Plus précisément, sous "Options":
CURLFORM_PTRCONTENTS
suivi d'un pointeur vers le contenu de cette partie, les données réelles à envoyer . libcurl utilisera le pointeur et se référer aux données dans votre application, donc vous devez vous assurer qu'il reste jusqu'à ce que curl n'en a plus besoin. Si les données ne sont pas terminées par NUL, ou si vous souhaitez que contienne zéro octet, vous devez définir sa longueur avec CURLFORM_CONTENTSLONGUEUR.
CURLFORM_CONTENTSLENGTH
suivie d'une longue donnant la longueur du contenu. Notez que pour le contenu CURLFORM_STREAM , cette option est obligatoire.
Ainsi, au lieu de
curl_formadd(&formpost,
&lastptr,
CURLFORM_COPYNAME, "send",
CURLFORM_FILE, "nowy.jpg",
CURLFORM_END);
Vous voudriez quelque chose comme
curl_formadd(&formpost,
&lastptr,
CURLFORM_COPYNAME, "send",
CURLFORM_PTRCONTENTS, p_jpg_data,
CURLFORM_CONTENTSLENGTH, jpg_data_len,
CURLFORM_END);
Je suppose que vous savez comment créer p_jpg_data
et lire les données dans, ou avez-vous besoin cela a expliqué?
CURLFORM_PTRCONTENTS n'est pas l'utilisation correcte ici, il ne créera pas une partie de téléchargement de fichier. Au lieu de cela, il faut utiliser CURLFORM_BUFFER pour envoyer une image à partir d'un tampon déjà existant en mémoire.
curl_formadd(&formpost,
&lastptr,
CURLFORM_COPYNAME, "send",
CURLFORM_BUFFER, "nowy.jpg",
CURLFORM_BUFFERPTR, data,
CURLFORM_BUFFERLENGTH, size,
CURLFORM_END);
- 1. Comment envoyer un fichier via HTTP, la bonne façon, en utilisant Python?
- 2. C++ - comment envoyer une demande de publication HTTP en utilisant Curlpp ou libcurl
- 3. Existe-t-il un conteneur d'index muti pour le stockage du disque dur plutôt que de la mémoire?
- 4. Envoi de requêtes SOAP en utilisant libcurl comme fichier XML
- 5. Téléchargement de l'image via libcurl
- 6. C# Envoyer l'image via HTTP
- 7. Libcurl via les threads
- 8. envoyer le fichier xml à http en utilisant python
- 9. Comment créer un fichier en mémoire puis envoyer le fichier à l'utilisateur via asp.net mvc + jquery?
- 10. Ecriture XML en mémoire au lieu du disque
- 11. en utilisant libcurl sans dll
- 12. Envoyer un fichier python en utilisant httplib
- 13. Exécuter HTTP POST avec l'authentification libcurl-digest, en utilisant curl_easy_send \ curl_easy_recv
- 14. Téléchargement de fichier avec libcurl en C++
- 15. Pourquoi diffuser un fichier plutôt que de l'envoyer immédiatement?
- 16. Objet de fichier en mémoire utilisant Python
- 17. Enregistrement d'un fichier en utilisant libcurl dans C
- 18. En utilisant XmlTextReader pour lire un fichier sur le même serveur via http
- 19. Création d'un post http libcurl
- 20. Envoyer un fichier MP3 via RTP
- 21. Comment envoyer un NSArray rempli d'objets via un HTTP POST?
- 22. Http code d'état avec libcurl?
- 23. Envoyer une requête HTTP à partir du fichier VC++
- 24. Utilisation de libcurl pour http-post
- 25. Envoyer un fichier via une socket en C
- 26. Mise en mémoire cache mySQL - Mémoire ou disque dur?
- 27. C++ LibCurl pour envoyer une requête HTTPS
- 28. Envoyer un fichier (image) via socket perl
- 29. Comment envoyer des données PUT longues dans libcurl sans utiliser de pointeurs de fichier?
- 30. Comment envoyer un fichier xml via protocole HTTP et HTTPS et obtenir le résultat
Peut confirmer, de cette façon fonctionne correctement. – StilesCrisis