Usando cURL para cargar datos POST con archivos
Me gustaría usar cURL no solo para enviar parámetros de datos en HTTP POST sino también para cargar archivos con un nombre de formulario específico. ¿Cómo debo hacer para hacer eso?
Parámetros de publicación HTTP:
userid = 12345 filecomment = Este es un archivo de imagen
Carga de archivos HTTP: Ubicación del archivo = /home/user1/Desktop/test.jpg Nombre del formulario para el archivo = imagen (corresponde a $_FILES['image'] en el lado de PHP)
Calculé parte del comando cURL de la siguiente manera:
curl -d "userid=1&filecomment=This is an image file" --data-binary @"/home/user1/Desktop/test.jpg" localhost/uploader.php
El problema que tengo es el siguiente:
Notice: Undefined index: image in /var/www/uploader.php
El problema es que estoy usando $_FILES['image'] para recoger archivos en el script PHP.
¿Cómo ajusto mis comandos cURL en consecuencia?
Necesitas usar la -F
opción:
-F/--form <name=content> Specify HTTP multipart POST data (H)
Prueba esto:
curl \
-F "userid=1" \
-F "filecomment=This is an image file" \
-F "image=@/home/user1/Desktop/test.jpg" \
localhost/uploader.php
Capturando la identificación del usuario como variable de ruta (recomendado):
curl -i -X POST -H "Content-Type: multipart/form-data"
-F "[email protected]" http://mysuperserver/media/1234/upload/
Capturando la identificación del usuario como parte del formulario:
curl -i -X POST -H "Content-Type: multipart/form-data"
-F "[email protected];userid=1234" http://mysuperserver/media/upload/
o:
curl -i -X POST -H "Content-Type: multipart/form-data"
-F "[email protected]" -F "userid=1234" http://mysuperserver/media/upload/