2014-10-09 3 views
5

Я нашел несколько вопросов, связанных с этим, но я не получил никакого подходящего ответа. Вот мой код:curl_setopt() бросает ошибку при попытке загрузить файл curl в 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; 

Я получаю исключение об ошибке, как:

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

Любая помощь будет оценен по достоинству!

+1

какую версию PHP вы используете? – Naincy

+1

Я использую версию php 5.5.9 –

+0

Пожалуйста, проверьте решение здесь: http://stackoverflow.com/questions/20972513/php-curl-the-usage-of-the-filename-api-for-file- загрузка-это-осуждается – versha

ответ

6

В РНР 5.5.0, то @ префикс устарел, и файлы можно отправить с помощью CURLFile. Вы можете проверить руководство here

Попробуйте это:

$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

Пожалуйста, обратитесь это, Пусть это поможет вам http://pdfcrowd.com/forums/read.php?4,1930

PHP 5.5 введен объект CurlFile, который осуждает старый @filename синтаксис Смотрите также: 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; 
} 
Смежные вопросы