使用php中的curl将文件上传到Slim Framework [重复]

问题描述 投票:2回答:2

可能重复:
无法在Heroku php应用程序中使用curl上传文件

在用php处理文件上传后,我尝试使用curl将文件发送到使用Slim Framework的rest api。 但是,$ _ FILES一旦到达Slim中的函数,便始终为空。

sender.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);

    }
});

我发送的文件不正确和/或可以执行我尝试的操作吗? 任何帮助表示赞赏。

php file-upload curl slim
2个回答
1
投票

据我所知,您需要使用更多选项来使用curl上传文件。 看这里

看看CURLOPT_UPLOAD选项,CURLOPT_POSTFIELDS的描述,它说,你需要使用@文件名前上传(和使用的完整路径)。


0
投票

这些是我需要的更改,并且有效:

$filepath = str_replace('\\', '/', realpath(dirname(__FILE__))) . "/";
$target_path = $filepath . $UploadDirectory . $FileName;
$data = array('name' => 'test', 'file' => '@'.$target_path);
© www.soinside.com 2019 - 2024. All rights reserved.