我的网站上有一个功能,用户可以创建相册来更好地整理照片。他们可以上传新照片,也可以从已上传的照片中进行选择。 在我的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;
}
感谢大家的帮助!!
答案 0 :(得分:2)
我猜您将已上传的照片存储在任何位置,然后您可以使用getimagesize()
函数(PHP Manual)的组合来检查上传的文件是否为图像。然后使用md5_file()
函数(PHP Manual)将上传文件的MD5哈希与存储的文件进行比较。如果它们存储在数据库中,那么将每个文件的MD5直接存储在自己的字段中可能会提高性能,因此您可以轻松地在数据库中查询现有的MD5哈希值。
希望这有帮助。
答案 1 :(得分:1)
首先,您必须使用此函数重新排列$ _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);
}
}
}
答案 2 :(得分:0)
if(!empty($_FILES)){
// you've got files?!?!
}
幸运的是在这里猜测,不太了解你的问题。