Hay varias formas de enviar un archivo como formulario a un servidor con PHP, aquí ponemos un ejemplo. Se puede enviar cualquier tipo de archivo, en este caso y si existen funciones para leer el contenido del archivo (IPTC) se puede obtener la información que ahí venga. El ejemplo está en github de como subir un archivo con CURL y PHP y además está el archivo para recibir y devolver la información. Si se ejecuta el ejemplo tal como está, se enviará la imagen test.jpg al servidor de tar.mx y devolverá la información, algo como lo que sigue:
MacBook-Pro-de-Jorge:enviarArchivoCurlPHP gnu$ php envia.php Subiendo archivo test.jpg... RESPUESTA DEL SERVIDOR: * datos de post titulo: descripción del archivo a enviar * datos de archivo recibido Array ( [name] => test.jpg [type] => application/octet-stream [tmp_name] => /tmp/phpDBamQd [error] => 0 [size] => 49912 ) Información IPTC: Array ( [Descripción] => AF-S Nikkor 16-80mm f/2.8-4E ED VR DX N [Autor] => Jorge Martínez Mauricio [Palabras] => lentes [Estado] => COAHUILA [Lens ID] => Nikon 16-80mm f/2.8-4E [Ciudad] => TORREON )
El archivo que recibe verifica si existen dos funciones para leer el contenido y de ser así, devuelve la información embebida en el archivo. Esto es útil para cuando se requiere obtener información de archivos de agencias por ejemplo, pero es irrelevante a lo que quería mostrar: la subida de archivos desde PHP (en consola en este caso, aunque adaptarlo para web es igual que un formulario). Escribí un script parecido porque para subir fotos tomadas al instante de mi cámara al archivo fotográfico, no es muy práctico estar llenando formularios web. Así que lo que hago es llenar la información IPTC en Adobe Ligthroom y exportar a diferentes directorios en mi escritorio, donde está corriendo un script para leer dichos directorios y enviar las fotografías que ahí estén directamente a nuestro banco de imágenes, sin estar añadiendo de nuevo la descripción en un formulario web de cada imagen. Aquí el enlace a github con el código ejemplo.
Además aquí tienes un ejemplo de como enviar datos por GET y POST a PHP con CURL.