2016-11-28 17 views
0

PHPを使用してファイルをアップロードする際に問題が1つあります。イメージタイプファイルを正常にアップロードできますが、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

状態$check != NULLを追加するには、$ _FILESを印刷して、ファイルが実際にアップロードまたはその他の問題であるかどうかを確認? print_r($ _ファイル);出口; – Ima

+0

@Ima:私はすでに印刷して、そこにそのメッセージを持っています。 – 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']); 
    } 

if-elseブロック

関連する問題