hanschrome Seguir
Alfa
Programador
Verificado por Whatsapp
¡Usuario con pocos negocios! ¡Utiliza siempre saldo de Forobeta!
- Desde
- 12 Ene 2014
- Mensajes
- 25
Hola a todos, llevo toda la mañana intentando subir un archivo de imagen con Curl en PHP, pero no consigo enviarlo con el filetype correcto.
En un método de una clase tengo esto:
La variable $vars que se puede observar en CURLOPT_POSTFIELDS contiene un array:
['file' => '@C:/wamp/www/upimg/img/1.png']
Es decir, que envía el archivo 1.png.
La petición va dirigida a un archivo llamado vars.php, que contiene esto:
Pero cuando realizo la petición, me devuelve esto:
La línea del detalle:
Como veis me asigna un type que no es el correcto, pues debería ser 'image/png'. La imagen es un archivo png en toda regla creado con photoshop.
¿Alguien sabe por qué ocurre esto y qué debo arreglar?
Muchas gracias a todos.
---------------------Prueba posterior--------------------
He probado con este código en el vars.php:
Y el archivo se guarda correctamente y es exactamente el mismo que la imagen anterior, pudiéndose visualizar.
Entonces... ¿Por qué no lo envía con el filetype correcto?
En un método de una clase tengo esto:
Insertar CODE, HTML o PHP:
$ch = curl_init();
curl_setopt($ch, CURLOPT_HEADER, 1);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_BINARYTRANSFER, 1);
curl_setopt($ch, CURLOPT_HTTPHEADER, ['Cookie: ' . $cookie]);
curl_setopt($ch, CURLOPT_URL, 'http://' . $host . $path);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $vars);
return curl_exec($ch);
La variable $vars que se puede observar en CURLOPT_POSTFIELDS contiene un array:
['file' => '@C:/wamp/www/upimg/img/1.png']
Es decir, que envía el archivo 1.png.
La petición va dirigida a un archivo llamado vars.php, que contiene esto:
Insertar CODE, HTML o PHP:
<?php
var_dump($_GET);
var_dump($_POST);
var_dump($_FILES);
?>
Pero cuando realizo la petición, me devuelve esto:
La línea del detalle:
Insertar CODE, HTML o PHP:
array (size=1)
'file' =>
array (size=5)
'name' => string '1.png' (length=5)
'type' => string 'application/octet-stream' (length=24)
'tmp_name' => string 'C:\wamp\tmp\php8A37.tmp' (length=23)
'error' => int 0
'size' => int 2896
Como veis me asigna un type que no es el correcto, pues debería ser 'image/png'. La imagen es un archivo png en toda regla creado con photoshop.
¿Alguien sabe por qué ocurre esto y qué debo arreglar?
Muchas gracias a todos.
---------------------Prueba posterior--------------------
He probado con este código en el vars.php:
Insertar CODE, HTML o PHP:
move_uploaded_file($_FILES['file']['tmp_name'],'1.png');
Y el archivo se guarda correctamente y es exactamente el mismo que la imagen anterior, pudiéndose visualizar.
Entonces... ¿Por qué no lo envía con el filetype correcto?
Última edición: