2014-10-09 6 views
5

Znalazłem kilka pytań związanych z powyższym, ale nie dostałem żadnej odpowiedniej odpowiedzi. Oto mój kod:curl_setopt() wyrzucenie wyjątku błędu podczas próby przesłania pliku przez curl w php

$requestUrl = <MY_URL>; 
$filePath = <MY_FILE_PATH>; 
$post = array('extra_info' => '123456','file_contents'=>'@'.$filePath); 

$ch = curl_init(); 
curl_setopt($ch, CURLOPT_URL,$requestUrl); 
curl_setopt($ch, CURLOPT_POST,1); 
curl_setopt($ch, CURLOPT_POSTFIELDS, $post); 
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
curl_setopt($ch, CURLOPT_HEADER, 1); 
$response = curl_exec($ch); 
curl_close($ch); 

echo $response; 

otrzymuję wyjątek błędu jak:

curl_setopt(): The usage of the @filename API for file uploading is deprecated. Please use the CURLFile class instead. 

Każda pomoc będzie mile widziana!

+1

jaka wersja PHP używasz? – Naincy

+1

Używam wersji PHP 5.5.9 –

+0

Proszę sprawdzić rozwiązanie tutaj: http://stackoverflow.com/questions/20972513/php-curl-the-usage-of-the-filename-api-for-file- uploading-is-przestarzałe – versha

Odpowiedz

6

Od PHP 5.5.0, @ prefiks jest przestarzały i pliki mogą być wysyłane za pomocą CURLFile. Można sprawdzić w instrukcji here

Spróbuj tego:

$ch = curl_init($requestUrl); 
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST"); 
curl_setopt($ch, CURLOPT_HTTPHEADER, 
array('Authorization: Bearer XXXXXXXXXXXXXXXYYYYYzzzzzz', 'Accept-Version: ~1', 'Except: 100-continue', 'Content-type: multipart/form-data')); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 
curl_setopt($ch, CURLINFO_HEADER_OUT, true); 

$args['file'] = new CurlFile('<file_path>', 'text/plain', 'myfile'); 

curl_setopt($ch, CURLOPT_POSTFIELDS, $args); 

$response = curl_exec($ch); 
4

Proszę odnieść to, co może pomóc http://pdfcrowd.com/forums/read.php?4,1930

PHP 5.5 wprowadzono przedmiot CurlFile że deprecates starą @filename składni Zobacz także: https://wiki.php.net/rfc/curl-file-upload

public function getCurlValue() 
{ 

    if (function_exists('curl_file_create')) { 
     return curl_file_create($this->filename, $this->contentType, $this->postname); 
    } 

    // Use the old style if using an older version of PHP 
    $value = "@{$this->filename};filename=" . $this->postname; 
    if ($this->contentType) { 
     $value .= ';type=' . $this->contentType; 
    } 

    return $value; 
}