2017-05-06 58 views
0

我有这个代码,我用来上传多个文件。PHP文件上传,检查文件类型

if(isset($_POST['submitButton'])) 
{ 
    if(isset($_FILES['gallery'])) 
    { 
     if($_FILES["gallery"]["size"] > 0) 
     { 
      foreach($_FILES['gallery']["name"] AS $key=>$file) 
      { 
       if($_FILES['gallery']['size'][$key] != 0) 
       { 
        $target_path = "../documents/" . date("Y-m-d") . '-' . rand(10, 999999999) . '-' . $_FILES['gallery']['name'][$key]; 
        $fajl_nev = mysqli_real_escape_string($kapcs, $_POST["images_alt"][ $key ]);     
        if(move_uploaded_file($_FILES['gallery']['tmp_name'][$key], $target_path)) 
        { 
         $file_name = basename($target_path); 
         $sql = 
         " 
          INSERT INTO letoltheto_fajl 
          (
           fajl_nev, 
           fajl_file, 
           fajl_datetime 
          ) 
          VALUES 
          (
           '$fajl_nev', 
           '$file_name', 
           NOW() 
          ) 
         "; 
         mysqli_query($kapcs, $sql) or die(mysqli_error($kapcs)); 
         header("Location: ".$host."/".$admin_folder."/feltoltott-fajlok.php?new=1"); 
        } 
        else 
        { 
         $error[] = "A fájl feltöltése nem sikerült, próbálja újra."; 
        } 
       } 
      } 
     } 
    } 
} 

我该如何检查文件类型?我给了允许的文件类型在下面的数组:

$allowed_files = array 
(
    "image/jpg", 
    "image/jpeg", 
    "image/bmp", 
    "image/gif", 
    "image/png", 
    "application/pdf" 
); 

,我也希望让更多的文件,如Excel,字...我怎样才能得到这些类型的?有没有什么内容,我可以在这里阅读?

+0

如果你这样做是为了学习的目的,没问题..但你可以结帐https://github.com/samayo/bulletproof,并保护自己的喧嚣。这是我的回购,我不是做广告,但我认为它会做你想做的。如果你想上传其他类型的文件,请查看https://github.com/brandonsavage/Upload – samayo

回答

0

你想检查文件扩展名或MIME。尝试是这样的:

$allowedFiles = array('gif', 'png', 'jpg', 'jpeg, 'bmp', 'pdf', 'doc', 'docx'); // etc... 
$filename = $_FILES['gallery']['name']; 
$ext = pathinfo($filename, PATHINFO_EXTENSION); 
if(!in_array($ext, $allowedFiles)) { 
    echo 'Error...'; 
} 
0

在允许列表中的TXT心不是,它让我上传txt文件也。

$allowed_files = array 

( //图像 'PNG'=> '图像/ PNG', 'JPE'=> '图像/ JPEG', 'JPEG'=> '图像/ JPEG', ' JPG” => '图像/ JPEG', 'GIF'=> '图像/ GIF', 'BMP'=> '图像/ BMP',

// PDF files 
'pdf' => 'application/pdf', 

// Tömörített fájlok 
'zip' => 'application/zip', 
'rar' => 'application/x-rar-compressed', 

// MS office 
'doc' => 'application/msword', 
'rtf' => 'application/rtf', 
'xls' => 'application/vnd.ms-excel', 
'ppt' => 'application/vnd.ms-powerpoint', 

// Open Office 
'odt' => 'application/vnd.oasis.opendocument.text', 
'ods' => 'application/vnd.oasis.opendocument.spreadsheet' 

);

if(isset($_POST['submitButton'])) 
{ 
    if(isset($_FILES['gallery'])) 
    { 
     if($_FILES["gallery"]["size"] > 0) 
     { 
      foreach($_FILES['gallery']["name"] AS $key=>$file) 
      { 
       if($_FILES['gallery']['size'][$key] != 0) 
       { 

        $filename = $_FILES['gallery']['name'][$key]; 
        $ext = pathinfo($filename, PATHINFO_EXTENSION); 
        if(!in_array($ext, $allowed_files[0])) 
        { 
         $error[] = "Nem engedélyezett fájl típus."; 
        } 

        $target_path = "../documents/" . date("Y-m-d") . '-' . rand(10, 999999999) . '-' . $_FILES['gallery']['name'][$key]; 
        $fajl_nev = mysqli_real_escape_string($kapcs, $_POST["images_alt"][ $key ]);     
        if(move_uploaded_file($_FILES['gallery']['tmp_name'][$key], $target_path)) 
        { 
         $file_name = basename($target_path); 
         $sql = 
         " 
          INSERT INTO letoltheto_fajl 
          (
           fajl_nev, 
           fajl_file, 
           fajl_datetime 
          ) 
          VALUES 
          (
           '$fajl_nev', 
           '$file_name', 
           NOW() 
          ) 
         "; 
         mysqli_query($kapcs, $sql) or die(mysqli_error($kapcs)); 
         header("Location: ".$host."/".$admin_folder."/feltoltott-fajlok.php?new=1"); 
        } 
        else 
        { 
         $error[] = "A fájl feltöltése nem sikerült, próbálja újra."; 
        } 
       } 
      } 
     } 
    } 
}