2010-03-27 5 views
4

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

1

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é?

9

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); 
+0

Peut confirmer, de cette façon fonctionne correctement. – StilesCrisis

Questions connexes