在php中使用curl将文件上载到Slim框架

在php中使用curl将文件上载到Slim框架,php,file-upload,curl,slim,Php,File Upload,Curl,Slim,可能重复: 在用php处理了一个文件上传后,我尝试使用curl将该文件发送到使用Slim框架的RESTAPI。但是,$\u文件到达Slim中的函数后始终为空 sender.php if(move_uploaded_file($_FILES['myFile']["tmp_name"], $UploadDirectory . $_FILES['myFile']["name"] )) { $ch = curl_init(); $data = array('name' => 't

可能重复:

在用php处理了一个文件上传后,我尝试使用curl将该文件发送到使用Slim框架的RESTAPI。但是,$\u文件到达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);

    }
});

我是否发送了错误的文件和/或是否可能执行我正在尝试的操作?非常感谢您的帮助。

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


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

这些是我需要的更改,它起到了作用:

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

非常感谢。我不需要CULLOPT_上传,但文件名/完整路径是我的问题。