Foros del Web » Programando para Internet » PHP »

Problema con Curl y PHP al subir imagen

Estas en el tema de Problema con Curl y PHP al subir imagen en el foro de PHP en Foros del Web. Hola bueno gracias de antemano por leer este post mi problema es el siguiente: "Estoy haciendo una API para un sitio web de imagenes y ...
  #1 (permalink)  
Antiguo 14/02/2012, 16:24
Avatar de eddwinpaz  
Fecha de Ingreso: noviembre-2007
Ubicación: Merida , Venezuela
Mensajes: 1.066
Antigüedad: 16 años, 5 meses
Puntos: 25
Pregunta Problema con Curl y PHP al subir imagen

Hola bueno gracias de antemano por leer este post

mi problema es el siguiente:

"Estoy haciendo una API para un sitio web de imagenes y debo subir la imagen usando Curl a el servidor y hasta ahora lo he logrado todo, el archivo se sube, pero tengo un problema y es que me sube es el .tmp y no el jpg o png que desee subir y cuando hago print_r da como resultado esto"

Array ( [media] => Array ( [name] => phpo7p3p4 [type] => application/octet-stream [tmp_name] => /tmp/phpyqVTI1 [error] => 0 [size] => 119258 ) )

la funcion que estoy usando para subir es esta.

Código PHP:
<?php
class twitpic
{
  
/* 
   * variable declarations
   */
  
var $post_url='http://localhost/floggiaAPI/gateway.php';
  var 
$post_tweet_url='http://localhost/floggiaAPI/gateway.php';
  var 
$url='';
  var 
$post_data='';
  var 
$result='';
  var 
$tweet='';
  var 
$return='';
 
/*
* @param1 is the array of data which is to be uploaded
* @param2 if passed true will display result in the XML format, default is false
* @param3 if passed true will update status twitter,default is false
*/
 
  
function __construct($data,$return=false,$tweet=false)
  {
    
$this->post_data=$data;
    if(empty(
$this->post_data) || !is_array($this->post_data)) //validates the data
      
$this->throw_error(0);
    
$this->display=$return;
    
$this->tweet=$tweet;
 
  }
 
  function 
post()
  {
    
$this->url=($this->tweet)?$this->post_tweet_url:$this->post_url//assigns URL for curl request based on the nature of request by user
    
$this->makeCurl();
  }
  private function 
makeCurl()
  {
    
$curl curl_init();
    
curl_setopt($curlCURLOPT_CONNECTTIMEOUT2);
    
curl_setopt($curlCURLOPT_HEADERfalse);
    
curl_setopt($curlCURLOPT_RETURNTRANSFER1);
    
curl_setopt($curlCURLOPT_BINARYTRANSFER1);
    
curl_setopt($curlCURLOPT_URL$this->url);
    
curl_setopt($curlCURLOPT_POST3);
    
curl_setopt($curlCURLOPT_POSTFIELDS$this->post_data);
    
$this->result curl_exec($curl);
    
curl_close($curl);
    if(
$this->display)
    {
       echo 
$this->result ;
    }
 
  }
  private function 
throw_error($code//handles few errors, you can add more
 
  
{
    switch(
$code)
    {
      case 
0:
        echo 
'Think, you forgot to pass the data';
        break;
      default:
        echo 
'Something just broke !!';
        break;
    }
    exit;
  }
//class ends here
 
?>
Código PHP:
<?php
if ($_POST)
{
        

    include 
'client-front-end/twitpic.php';

    
$file $_FILES['media'];
    
$postfields = array();

    
$postfields['photo_title'] = $_POST['photo_title'];
    
$postfields['photo_user'] = $_POST['photo_user'];
    
$postfields['photo_description'] = $_POST['photo_description'];
    
$postfields['media'] = "@$file[tmp_name]";

    
$t = new twitpic($postfieldstruetrue);
    
$t->post();
    exit;
}
?>

<style type="text/javascript">
    *{font-family:verdana;}
    span{font-size:12px;color:#393939;}
    h3{font-size:14px;color:#5AAAF7;}
</style>
<body>

    <h3>Floggia Demo Upload Picture</h3>
    <form method="post"  enctype="multipart/form-data" action="twitpic.php"   >
        <p><span style="height:40px;font-weight:bold;margin-right:56px;">Photo Title :</span>
            <input type="text" name="photo_title" id="photo_title" /></p>
        <p><span style="height:40px;font-weight:bold;margin-right:61px;">User ID:</span><input type="password" name="photo_user" id="photo_user" /></p>

        <p><span style="vertical-align:text-top;height:40px;font-weight:bold;margin-right:28px;">Description :</span> 
            <textarea cols="35" rows="2" name="photo_description" id="photo_description"></textarea></p>
        <p><span style="vertical-align:text-top;height:40px;font-weight:bold;">Choose an image to upload: </span><input type="file" name="media" /></p>
        <p style="width:250px;text-align:right;margin-top:50px;"><input type="submit" value="Upload&nbsp;&raquo;" /> </p>
    </form>
</body>
__________________
O nos hacemos miserables o nos hacemos fuertes , la cantidad de trabajo es la misma.
  #2 (permalink)  
Antiguo 14/02/2012, 20:00
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.106
Antigüedad: 15 años, 8 meses
Puntos: 2237
Respuesta: Problema con Curl y PHP al subir imagen

No he revisado tu código pero, al subir un archivo al servidor se almacena en la carpeta de temporales con un nombre temporal, antes de poder manipularlo para subirlo por cURL deberías moverlo a otra ubicación y cambiar el nombre; si ya no lo necesitas, después lo borras.
__________________
- León, Guanajuato
- GV-Foto

Etiquetas: curl, imagenes, variables
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 01:07.