我在我的网站上有一个功能,用户可以创建一个相册来更好地组织他们的照片。他们可以上传新的照片,也可以从他们已经上传的照片中选择。在我的PHP中,如果它们上传了任何新的文件,那么我的代码会遍历它们上传的文件。它的工作很好,但我只希望当他们真正上传新照片时,它才能工作。现在,即使他们选择了已经上传的老照片,它也会运行。我使用HTML5的“多重”属性,以便他们可以上传多张照片。在我的PHP中,我如何编写一个条件if语句来只在上传照片时运行这段代码?
foreach ($_FILES['uploads']['name'] as $key => $file) {
$time= time();
$target= UPLOADPATH . $time . $file;
move_uploaded_file($_FILES['uploads']['tmp_name'][$key], $target);
}我试过使用:
if ($_FILES['uploads']['size'] != 0)
if ($_FILES != 0)
if ($_FILES['upload']['name'] !=0)但是到目前为止还没有成功。我能做什么?我做错了什么?
谢谢
更新
最后,我将变量设置为$_FILES数组中第一个元素的值。
就像这样:
$file_test= $_FILES['uploads']['size']['0'];然后我在测试条件中使用了它:
($file_test != 0) {
// run the code;
}谢谢大家的帮助!
发布于 2012-10-19 18:58:17
我想您可以将已经上传的照片存储在任何地方,然后可以使用getimagesize()函数(PHP手册)的组合来检查上传的文件是否是图像。然后比较使用MD5函数(PHP手册)上传的文件和存储的文件的(PHP手册)哈希值。如果它们存储在数据库中,那么直接将每个文件的MD5存储在字段中可能会提高性能,因此您可以轻松地查询数据库中现有的MD5哈希。
希望这能有所帮助。
发布于 2012-10-19 19:19:26
首先,您必须使用此函数重新排列$_FILES数组。
function rearrange( $arr ){
foreach($arr as $key => $items){
foreach($items as $i => $val){
$array[$i][$key] = $val;
}
}
return $array;
}
$files = rearrange($_FILES['uploads']);
//Then do the foreach loop upload
if(!empty($files))
{
foreach ($files as $file) {
// Check the file size inside the foreach loop
if($file['size'] > 0)
{
$time= time();
$target= UPLOADPATH . $time . $file['name'];
move_uploaded_file($file['tmp_name'], $target);
}
}
}发布于 2012-10-19 18:52:20
if(!empty($_FILES)){
// you've got files?!?!
}幸运的是,在这里,你不能真正理解你的问题。
https://stackoverflow.com/questions/12980581
复制相似问题