使用cURL保留文件名以传输文件

时间:2010-06-08 12:41:58

标签: php http file curl

I'm transferring files from an existing http request using cURL like so...

    $postargs = array(
    'nonfilefield' =>'nonfilevalue',           
    'fileentry' => '@'.$_FILES['thefile']['tmp_name'][0]
 );

 $ch = curl_init('http://localhost/curl/rec.php');
 curl_setopt($ch,CURLOPT_USERAGENT, "Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0)");  
 curl_setopt($ch,CURLOPT_RETURNTRANSFER, true); 
 curl_setopt($ch,CURLOPT_POST,TRUE);
 curl_setopt($ch,CURLOPT_POSTFIELDS,$postargs);
 curl_exec($ch);
 curl_close($ch);

我可以使用tmp_name的唯一方法是使用tmp_name,但不会发送它。但是,当我稍后想要命名文件时,我会丢失名称值。

有没有办法保留$ _FILES数组,因为它通常没有卷曲?我也在我的脚本中使用了一组文件字段,所以目前我必须将我的多维数组转换为单个维度才能使其工作

2 个答案:

答案 0 :(得分:0)

您可以使用move_uploded_file()将文件重命名为原始名称。

move_uploded_file($_FILES['thefile']['tmp_name'][0], $your_uploads_dir.'/'.$_FILES['thefile']['name'][0]);
$postargs = array(
'nonfilefield' =>'nonfilevalue',           
'fileentry' => '@'.$your_uploads_dir.'/'.$_FILES['thefile']['name'][0]);

答案 1 :(得分:0)

没关系,这就足够了......

    $postargs = array(
        'nonfilefield'=>'nonfilevalue',                     
        $_FILES['thefile']['name'][0] => '@'.$_FILES['thefile']['tmp_name'][0]
    );