2015-12-14 3 views
2

Я пытаюсь загрузить файл через curl на другом сервере. Я создал для этого скрипт, но я не могу получить параметр $_FILES. Пусто.Загрузка файла через curl в php

$request = curl_init('http://localhost/pushUploadedFile.php'); 
$file_path = $path.$name; 
curl_setopt($request, CURLOPT_POST, true); 
curl_setopt(
    $request, 
    CURLOPT_POSTFIELDS, 
    array(
     'file' => '@' . $file_path, 
     'test' => 'rahul' 
)); 
curl_setopt($request, CURLOPT_RETURNTRANSFER, true); 
echo curl_exec($request);exit(); 

pushUploadedFile.php:

print_r($_FILES['file']); 

ответ

2

Какая версия PHP вы используете? В PHP 5.5 была введена опция завивки CURLOPT_SAFE_UPLOAD, которая по умолчанию ставит true с PHP 5.6.0. Когда он загружается true, файлы с @/path/to/file отключены. Таким образом, если вы используете PHP 5.6 или новее вы должны установить его false разрешить загрузку:

curl_setopt($request, CURLOPT_SAFE_UPLOAD, false); 

Но формат @/path/to/file для загрузки устарел и устаревшая PHP 5.5.0, вы должны использовать CurlFile класс для этого сейчас:

$request = curl_init(); 
$file_path = $path.$name; 
curl_setopt($request, CURLOPT_URL, 'http://localhost/pushUploadedFile.php'); 
curl_setopt($request, CURLOPT_POST, true); 
curl_setopt(
    $request, 
    CURLOPT_POSTFIELDS, 
    array(
     'file' => new CurlFile($file_path), 
     'test' => 'rahul' 
)); 
curl_setopt($request, CURLOPT_RETURNTRANSFER, true); 
echo curl_exec($request); 
1
$file_name_with_full_path = realpath('./sample.jpeg'); 
$post = array('extra_info' => '123456','file_contents'=>'@'.$file_name_with_full_path); 
$ch = curl_init(); 
curl_setopt($ch, CURLOPT_URL,$target_url); 
curl_setopt($ch, CURLOPT_POST,1); 
curl_setopt($ch, CURLOPT_POSTFIELDS, $post); 
$result=curl_exec ($ch); 
curl_close ($ch); 
0
 $target_url ="http://www.localwork.com/pushUploadedFile.php";  
     $file_full_path = $path.$img_name;    
     $file_name_with_full_path = new CurlFile($file_full_path, 'image/png', $name); 

     $post = array('path' => $path,'file_contents'=>$file_name_with_full_path); 
     $ch = curl_init(); 
     curl_setopt($ch, CURLOPT_URL,$target_url); 
     curl_setopt($ch, CURLOPT_POST,1); 
     curl_setopt($ch, CURLOPT_POSTFIELDS, $post); 
     $result=curl_exec ($ch); 
     curl_close ($ch); 
Смежные вопросы