cURL http post de téléchargement de fichiers à l'aide de curl --de données en ligne de commande linux
J'ai essayé de télécharger le fichier sur le serveur à l'aide de cette commande dans la ligne de commande linux:
curl -v --data 'file=@/var/www/fbapp/images/registration.png' http://myserver/xmltest/curlupload.php
mais il n'est pas en téléchargeant le fichier sur le serveur, même si c'est de l'envoi de la réponse en retour.
Bien que si j'utilise cette commande, il vous permettra de télécharger le fichier et envoie la réponse:
curl -v -F 'filename=registration.png' -F 'file=@/var/www/fbapp/images/registration.png' http://myserver/xmltest/curlupload.php
Mais je voulais la commande dans le curl --données format lui-même.
C'est mon code PHP sur le serveur:
<?php
$uploadpath = "images/";
$filedata = $_FILES['file']['tmp_name'];
echo "filedata= ".$filedata;
if ($filedata != '')
copy($filedata,$uploadpath."1.png");
echo "success";
?>
Et c'est l'en-tête de la réponse que je serai de retour:
> POST /xmltest/curlupload.php HTTP/1.1
> User-Agent: curl/7.22.0 (i686-pc-linux-gnu) libcurl/7.22.0 OpenSSL/1.0.1 zlib/1.2.3.4 libidn/1.23 librtmp/2.3
> Host: myserver
> Accept: */*
> Content-Length: 44
> Content-Type: application/x-www-form-urlencoded
>
* upload completely sent off: 44out of 44 bytes
< HTTP/1.1 200 OK
< Date: Thu, 06 Nov 2014 07:01:56 GMT
< Server: Apache
< Vary: Accept-Encoding
< Transfer-Encoding: chunked
< Content-Type: text/html
<
* Connection #0 to host myserver left intact
* Closing connection #0
filedata= success
Comment puis-je utiliser curl --données de télécharger le fichier?
double possible de Comment envoyer une requête POST avec les données spécifiées dans le fichier via CURL
OriginalL'auteur Sandeep Rao | 2014-11-06
Vous devez vous connecter pour publier un commentaire.
Vous ne pouvez généralement pas simplement pick-F ou-d (--données) à votre choix. Le serveur web qui va recevoir votre message s'attend à un des formats. Si la forme que vous essayez de soumettre utilise le type "multipart/form-data', alors et seulement alors vous devez utiliser la F-type. Si non, vous devez utiliser -d ce qui provoque alors un affichage de type "application/x-www-form-urlencoded'.
multipart/formposts avec -F utilise une mise en forme spéciale de la poste avec le Mime-en-têtes de séparer les différentes parties, chacune ayant son propre ensemble d'en-têtes.
-d c'est juste les premières données envoyées par le serveur pour interpréter/décodage.
Mentionné dans la curl FAQ.
(Mais puisque vous écrivez le code PHP dans ce cas, vous avez juste à décider quelle méthode vous voulez l'accepter et ensuite faire votre commande curl ligne de l'utiliser.)
OriginalL'auteur Daniel Stenberg