2011-06-05 19 views
8

Estoy tratando de publicar un archivo de imagen en un servidor. Inicialmente probé mi script sin proxy en mi casa y funcionó bien. Pero cuando utilicé el mismo guión en mi universidad, arrojaba algún error. La función para subir imágenes es la siguientecurl post file detrás de un proxy devuelve error

function upload($filepath,$dir) 

{ 
    $ch = curl_init(); 
    curl_setopt($ch, CURLOPT_HEADER, 0); 
    curl_setopt($ch, CURLOPT_VERBOSE, 0); 
    curl_setopt($ch, CURLOPT_PROXY, 'localhost:7777'); 
    curl_setopt($ch, CURLOPT_PROXYUSERPWD, 'ae07b026:kpack'); 
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 
    curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/4.0 (compatible;)"); 
    curl_setopt($ch, CURLOPT_POST, true); 
    curl_setopt($ch, CURLOPT_URL, 'http://finalytics.in/sites/scrap/uploader.php'); 
    $post_array = array(
     "my_file"=>"@".$filepath, 
     "upload"=>"Upload", 
     "dir"=>$dir 
    ); 
    print_r($post_array); 
    curl_setopt($ch, CURLOPT_POSTFIELDS, $post_array); 
    $response = curl_exec($ch); 
    echo $response; 

} 

y uploader.php es un archivo normal, que simplemente guarda la imagen.

el error que estoy recibiendo es así

 ERROR 
    The requested URL could not be retrieved 

While trying to process the request: 

    POST /sites/scrap/uploader.php HTTP/1.1 
    Proxy-Authorization: Basic YWUwN2IwMjY6a3BhY2s= 
    User-Agent: Mozilla/4.0 (compatible;) 
    Host: finalytics.in 
    Accept: */* 
    Proxy-Connection: Keep-Alive 
    Content-Length: 87022 
    Expect: 100-continue 
    Content-Type: multipart/form-data; boundary=----------------------------07ae68105e71 


The following error was encountered: 

    Invalid Request 

Some aspect of the HTTP Request is invalid. Possible problems: 

    Missing or unknown request method 
    Missing URL 
    Missing HTTP Identifier (HTTP/1.0) 
    Request is too large 
    Content-Length missing for POST or PUT requests 
    Illegal character in hostname; underscores are not allowed 

Your cache administrator is webmaster. 
Generated Sun, 05 Jun 2011 17:26:33 GMT by proxy1.iitm.ac.in (squid/2.7.STABLE7) 
+0

Sólo una conjetura, pero es su proxy universidad realmente en su servidor local? – konsolenfreddy

+0

no es, estoy tunelizando el proxy académico y usándolo. –

Respuesta

12

El problema es el instituto de proxy utilizando es "SQUID". Y Squid no admite Esperar: 100-continuar.

Así que finalmente añade esto a mis opciones

curl_setopt($ch, CURLOPT_HTTPHEADER, array('Expect:')); 

y su todo funcionando bien.

1

si la solución anterior no funciona, por favor añadir

curl_setopt($ch, CURLOPT_HTTPHEADER, array("Content-type: multipart/form-data",'Expect: ')); 
Cuestiones relacionadas