2016-11-28 1 views
0

PHP를 사용하여 파일을 업로드하는 동안 한 가지 문제가 있습니다. 이미지 유형 파일을 성공적으로 업로드 할 수 있지만 pdf/docs 유형 파일을 업로드 할 수 없습니다. 아래 코드를 설명하고 있습니다.PHP를 사용하여 docs/pdf 파일을 업로드 할 수 없습니다.

$target_dir = "../../admin/enquiry/"; 
$fileName = generateRandom() . '_' . $_FILES['attachment']['name']; 
$target_file = $target_dir . basename($fileName); 
$imageFileType = pathinfo($target_file, PATHINFO_EXTENSION); 
$uploadOk = 1; 
$check = getimagesize($_FILES['attachment']['tmp_name']); 
header('Content-Type: application/json'); 
if ($check !== false) { 
     $result['msg'] = "check not false."; 
      // echo json_encode(array('status' => $check['mime'])); 
     $uploadOk = 1; 
    } else { 
     $result['msg'] = "check false."; 
      // echo json_encode(array('status' => 'upload failed')); 
     $uploadOk = 0; 
    } 

    if (file_exists($target_file)) { 
     echo json_encode(array('status' => 'file already exists')); 
     $uploadOk = 0; 
    } 
    if ($uploadOk == 0) { 
     // 
    } else { 
       if (move_uploaded_file($_FILES['attachment']['tmp_name'], $target_file)) { 
       $result['msg'] = "File has uploaded successfully."; 
       $result['num'] = 1; 
       $result['img'] =$fileName; 
       }else{ 
       $result['msg'] = "Sorry, Your File could not uploaded to the directory."; 
       $result['num'] = 0; 
       } 

      } 

여기에 내가 메시지 check false.를 얻고는 getimagesize 몇 가지 문제가있는 것을 의미한다. 나는 또한 파일 크기 138kb를 넘길 수 있지만 이미지 업로드의 경우에는 성공적으로 업로드하지만 다른 유형의 파일은 업로드 할 수 없지만 업로드해야합니다. 제발 도와주세요.

+0

은을 $ _FILES를 인쇄하고 파일이 실제로 업로드 또는 기타 문제가되는 경우 확인 if-else 블록에 조건 $check != NULL을 추가? print_r ($ _ FILES); 출구; – Ima

+0

@ 아이마 : 나는 이미 그 메시지를 인쇄하여 가지고 있습니다. – satya

+0

@RuhulAmin : 귀하의 게시물에 대한 내 의견을 확인하십시오. 귀하의 문제는 동일하지만 동일한 문제였습니다. – satya

답변

1

파일 맨 위에 PHP 오류를 사용하려면 다음 코드를 추가하십시오.

error_reporting(-1); 
ini_set('display_errors', 'On'); 
set_error_handler("var_dump"); 


    $target_dir = "../../admin/enquiry/"; 
    if(isset($_FILES['attachment'])){ 
    $errors= array(); 
    $file_name = generateRandom() . '_' .$_FILES['attachment']['name']; 
    $target_file = $target_dir . basename($file_name); 
    $file_size = $_FILES['attachment']['size']; 
    $file_tmp = $_FILES['attachment']['tmp_name']; 
    $file_type = $_FILES['attachment']['type']; 
    $file_ext=strtolower(end(explode('.',$_FILES['attachment']['name']))); 

    $extension= array("jpeg","jpg","png","pdf"); 

    if(in_array($file_ext,$extension)=== false){ 
     $errors[]="extension not allowed, please choose a JPEG,PNG or PDF file."; 
    } 

    if($file_size > 2097152) { 
     $errors[]='File size must be exactely 2 MB'; 
    } 

    if(empty($errors)==true) { 
     move_uploaded_file($file_tmp,$target_file); 
     echo "Success"; 
    }else{ 
     print_r($errors); 
    } 
    } 
?> 
+0

@ Rahul : 아니, 작동하지 않습니다. 그 메시지는'check false' 메시지를 다시 보냅니다. – satya

+0

'error_reporting (-1);을 사용하여 원래 얻고있는 오류 메시지는 무엇입니까? ini_set ('display_errors', 'On'); set_error_handler ("var_dump"); ' –

0

조건부로 getImagesize 함수를 호출하십시오. 파일 유형이 image이면 호출해야합니다.

+0

@ snehal : 모든 유형의 파일을 허용해야합니다. – satya

0

getimagesize()를 호출하기 전에 업로드 된 파일을 확인하십시오.

if($file_type=="image/gif" || $file_type=="image/jpeg") 
    { 
     $check = getimagesize($_FILES['attachment']['tmp_name']); 
    } 

또한

관련 문제