Загрузка файла в Slim Framework с помощью curl в php

Возможный дубликат:
Не удается загрузить файл с помощью curl в приложении heroku php

После обработки загрузки файла в php я пытаюсь отправить этот файл с помощью завитка в мой API для отдыха, который использует Slim Framework. Однако $_FILES всегда пуст, как только он достигает функции в Slim.

отправитель.php

if(move_uploaded_file($_FILES['myFile']["tmp_name"], $UploadDirectory . $_FILES['myFile']["name"] ))
{
    $ch = curl_init();
    $data = array('name' => 'test', 'file' => $UploadDirectory . $_FILES['myFile']["name"]);

    curl_setopt($ch, CURLOPT_URL, 'http://localhost/slimlocation/upload/');
    curl_setopt($ch, CURLOPT_POST, 1);
    curl_setopt($ch, CURLOPT_POSTFIELDS, $data);

    curl_exec($ch); 
 }

И функция получения запроса в Slim:

$app->post('/upload/', function() use ($app) {
    if(isset($_FILES)){

        // count is always zero
        echo count($_FILES);

    }
});

Я неправильно отправляю файл и/или возможно ли сделать то, что я пытаюсь сделать? Любая помощь приветствуется.


person Drew    schedule 01.11.2012    source источник


Ответы (2)


Насколько я знаю, вам нужно использовать больше параметров для загрузки файла с помощью curl. См. здесь.

Посмотрите на параметр CURLOPT_UPLOAD и описание CURLOPT_POSTFIELDS, в нем говорится, что вам нужно использовать @ перед именем файла для загрузки (и использовать полный путь).

person Eduardo Reveles    schedule 01.11.2012
comment
Спасибо большое. Мне не нужен был CURLOPT_UPLOAD, но моя проблема заключалась в имени файла/полном пути. - person Drew; 02.11.2012

Это были изменения, которые мне были нужны, и это сработало:

$filepath = str_replace('\\', '/', realpath(dirname(__FILE__))) . "/";
$target_path = $filepath . $UploadDirectory . $FileName;
$data = array('name' => 'test', 'file' => '@'.$target_path);
person Drew    schedule 01.11.2012