2012-11-01 48 views
2

可能重复:
Failing to upload file with curl in heroku php app文件上传到超薄框架在PHP中使用卷曲

处理PHP中的文件上传,我想使用该文件卷曲发到我的休息后, api使用Slim Framework。但是,$ _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); 
} 

和函数接收的修身要求:

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

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

    } 
}); 

我是否发送错误的文件和/或是否有可能做什么,我尝试?任何帮助表示赞赏。

回答

1

据我所知,你需要使用更多的选项来卷曲文件上传。见here

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

+1

非常感谢。我不需要CURLOPT_UPLOAD,但文件名/完整路径是我的问题。 – Drew

0

这些都是我需要的变化和它的工作:

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