2

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

在 php 中处理文件上传后,我尝试使用 curl 将该文件发送到使用 Slim 框架的 rest api。但是,$_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);

    }
});

我是否错误地发送了文件和/或是否可以做我正在尝试的事情?任何帮助表示赞赏。

4

2 回答 2

1

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

查看CURLOPT_UPLOAD选项和 CURLOPT_POSTFIELDS 的描述它说您需要在文件名之前使用 @ 来上传(并使用完整路径)。

于 2012-11-01T19:24:50.437 回答
0

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

$filepath = str_replace('\\', '/', realpath(dirname(__FILE__))) . "/";
$target_path = $filepath . $UploadDirectory . $FileName;
$data = array('name' => 'test', 'file' => '@'.$target_path);
于 2012-11-01T20:12:02.693 回答