2016-03-28 102 views
1

我想上传多个图像到服务器,并将他们的名字存入mysql数据库。我不知道为什么脚本在每个图像名称的开头添加0,1,2 ......。以及为什么重命名不起作用,如果我上传一个与它替换的名字相同的图像。多文件php上传

$images = array(); 
if(isset($_FILES['files'])){ 
    $errors= array(); 
    foreach($_FILES['files']['tmp_name'] as $key => $tmp_name){ 
    $file_name = $key.$_FILES['files']['name'][$key]; 
    $file_size =$_FILES['files']['size'][$key]; 
    $file_tmp =$_FILES['files']['tmp_name'][$key]; 
    $file_type=$_FILES['files']['type'][$key]; 
     if($file_size > 2097152){ 
     $errors[]='File size must be less than 2 MB'; 
     } 
     $desired_dir="images"; 
     if(empty($errors)==true){ 
      if(is_dir($desired_dir)==false){ 
       mkdir("$desired_dir", 0700); // Create directory if it does not exist 
      } 
      if(is_dir("$desired_dir/".$file_name)==false){ 
       move_uploaded_file($file_tmp,"images/".$file_name); 
      }else{     //rename the file if another one exist 
       $new_dir="images/".$file_name.time(); 
       rename($file_tmp,$new_dir) ;  
      } 
      $images[] = $file_name;  
     }else{ 
       print_r($errors); 
     } 
    } 
    if(empty($error)){ 
    $imglinks = implode(" | ", $images); 
    } 
    echo $imglinks; 
} 
+1

这条线原因'$ FILE_NAME = $键$ _ FILES [ '文件'] [ '名称'] [$键];'附加0 ,1,2 ...开头 – Saty

回答

2

$键被级联到文件名

$images = array(); 
if(isset($_FILES['files'])){ 
    $errors= array(); 
    foreach($_FILES['files']['tmp_name'] as $key => $tmp_name){ 
    $file_name = $_FILES['files']['name'][$key]; 
    $file_size = $_FILES['files']['size'][$key]; 
    $file_tmp = $_FILES['files']['tmp_name'][$key]; 
    $file_type = $_FILES['files']['type'][$key]; 
     if($file_size > 2097152){ 
     $errors[]='File size must be less than 2 MB'; 
     } 
     $desired_dir="images"; 
     if(empty($errors)==true){ 
      if(is_dir($desired_dir)==false){ 
       mkdir("$desired_dir", 0700); // Create directory if it does not exist 
      } 
      if(is_dir("$desired_dir/".$file_name)==false){ 
       move_uploaded_file($file_tmp,"images/".$file_name); 
      }else{     //rename the file if another one exist 
       $new_dir="images/".$file_name.time(); 
       rename($file_tmp,$new_dir) ;  
      } 
      $images[] = $file_name;  
     }else{ 
       print_r($errors); 
     } 
    } 
    if(empty($error)){ 
    $imglinks = implode(" | ", $images); 
    } 
    echo $imglinks; 
}