2014-02-18 3 views
0

안녕하세요 저는 사용자가 워드 파일, ppt, PDF, 엑셀 파일 등의 이미지와 응용 프로그램을 업로드 할 수있는 웹 페이지에서 작업하고 있습니다. 내 코드는 어느 누구보다 나를 더 좋고 안전한 방법으로 제안 할 수 있습니다. 나는 클라이언트 측에서가 아니라 서버 측에서 MIME 체크를하고 싶다. 또한 최대 파일 크기를 7MB로 업로드하고 싶습니다. 허용 확장자를 가진 하나 받아 마임 유형 하나 이 내 코드 중 하나가 두 개의 배열을 만들기 아무것도에게 나에게php 업로드 이미지와 pdf, doc, ppt 같은 문서

$allowedExts = array("pdf", "doc", "docx","png","jpg","jpeg","gif"); 
$extension = end(explode(".", $_FILES["uploadpic"]["name"])); 
if (($_FILES["uploadpic"]["type"] == "application/pdf") || 
($_FILES["uploadpic"]["type"] == "application/msword") || 
($_FILES["uploadpic"]["type"] 
== "application/vnd.openxmlformats-officedocument.wordprocessingml.document") || 
($_FILES["uploadpic"]["type"] == "image/png") || 
    ($_FILES["uploadpic"]["type"]=="image/jpeg") || 
    ($_FILES["uploadpic"]["type"] == "image/jpg") 
    && ($_FILES["uploadpic"] ["size"] < 7340032) && 
    in_array($extension, $allowedExts)) 
{ 
    if ($_FILES["uploadpic"]["error"] > 0) 
    { 
echo 'error'; 
exit; 
    } 
    else 
    { 
    $filetname=$_FILES ['uploadpic']['tmp_name']; 
    $filename=$_FILES ['uploadpic']['name']; 
    $insert=move_uploaded_file($filetname,"folder/$filename"); 
    $insertpostsandpic=mysql_query("insert into `database` (`id`,`name`,`date`) 
    values ('$id','$filename','$time')"); 
    echo 'sucess'; exit; 
    } 
     } else{ 
    echo 'fail'; 
    exit; 
     } 
+0

가 제대로 작동인가요 :

나는 다음과 같은 코드를 제안? –

+0

나중에 작동하지만 ppt 파일이 아니라 여기 MIME 확인은 사용자 측에서 수행됩니다 .. – user3297932

+0

사용자가 png 로의 확장을 변경하여 PHP 파일을 업로드 할 수 있습니다 – user3297932

답변

0

을 제안 해주십시오 수 있습니다. 파일 확장명을 얻으려면 SplFileInfo::getExtension()을 사용하십시오.

$accepted_mimes = array(
    'image/png', 
    'application/pdf', 
    'addyourown' 
); 
$accepted_extensions = array(
    'png', 
    'pdf', 
    'addyourown' 
); 
$max_file_size = 7*1000*1000; 
$file = $_FILES['filename']['tmp_name']; 

$obj = new SplFileInfo($file); 
$extension = $obj->getExtension(); 
$mime = $obj->getType(); 
$size = $obj->getSize(); 

if(!in_array($extension, $accepted_extensions)) 
{ 
    echo 'Extension '. $extension .' not accepted'; 
} 
if(!in_array($mime, $accepted_mimes)) 
{ 
    echo 'Extension '. $mime .' not accepted'; 
} 
if($size > $max_file_size) 
{ 
    echo 'File size exceeded maximum file size limit'; 
} 
관련 문제