2011-12-20 50 views
0

我似乎无法让这个东西正常工作,我会认为我有它,而其他东西不会工作。看看...多个文件上传不起作用,is_upload_file

我想上传多个文件,这里是我的PHP,因为它总是说有一个文件的问题,如果我删除is_uploaded_file,它只是不工作。

include('image.php'); 
$image = new SimpleImage(); 

foreach(array_keys($_FILES['ref']['name']) as $i) { 

    if (is_uploaded_file($_FILES['ref']['name'][$i])) { 
     $time = date("fYhis"); 
     $destination="./../img/treatments/" .$pageid. "/refimgs"; 
     $tdestination="./../img/treatments/" .$pageid. "/refimgs/thumbs"; 
     $image->load($_FILES['ref']['name'][$i]); 
     $image->save($destination . '/' .$time . $i . '.jpg');  
     $image->resizeToWidth(140); 
     $image->save($tdestination . '/' .$time . $i . '.jpg'); 

    }else{ echo "Possible file upload attack: "; 
     echo "filename '". $_FILES['ref']['name'][$i] . "'."; 
    } 
} 
+0

你是否在窗体上设置了'enctype =“multpart/form-data”'? – 2011-12-20 01:21:23

+0

我没有,但它似乎没有任何区别,仍然是同样的问题 – 2011-12-20 01:26:04

+0

什么是你得到的完整的错误信息?尝试使用'$ _FILES ['ref'] ['error'] [$ i]'来获取错误消息。 – 2011-12-20 02:04:48

回答

1

您必须使用$_FILES['ref']['tmp_name']中的is_uploaded_file函数。 更新的代码行看起来像:

include('image.php'); 
$image = new SimpleImage(); 
foreach(array_keys($_FILES['ref']['name']) as $i) { 

    if (is_uploaded_file($_FILES['ref']['tmp_name'][$i])) { 
     $time = date("fYhis"); 
     $destination="./../img/treatments/" .$pageid. "/refimgs"; 
     $tdestination="./../img/treatments/" .$pageid. "/refimgs/thumbs"; 
     $image->load($_FILES['ref']['name'][$i]); 
     $image->save($destination . '/' .$time . $i . '.jpg');  
     $image->resizeToWidth(140); 
     $image->save($tdestination . '/' .$time . $i . '.jpg'); 

    }else{ echo "Possible file upload attack: "; 
     echo "filename '". $_FILES['ref']['name'][$i] . "'."; 
    } 
} 

注:在客户机的文件name是不是在服务器有效,你必须使用tmp_name代替。 希望这会帮助你理清问题。

+0

我们走了,不知道为什么我设置了名称,谢谢 – 2011-12-20 02:07:03