douluo1330
2016-11-28 06:55
浏览 121
已采纳

无法使用PHP上传docs / pdf文件

I have one issue while uploading file using PHP. I can upload the image type file successfully but could not able to upload the pdf/docs type file. I am explaining my code below.

$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;
              }

            }

Here i am getting message check false. means there is some problem with getimagesize. I can also passing the file size 138kb but in case of image its uploading successfully but other type file could not upload but i need to upload those.Please help me.

图片转代码服务由CSDN问答提供 功能建议

使用PHP上传文件时遇到一个问题。 我可以成功上传图像类型文件,但无法上传pdf / docs类型文件。 我正在解释下面的代码。

  $ 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 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'] =“文件已成功上传。”; 
 $ result ['num'] = 1; 
 $ result ['img'] = $ fileName; 
} else {  
 $ result ['msg'] =“抱歉,您的文件无法上传到目录。”; 
 $ result ['num'] = 0; 
} 
 
} 
    
 
 

我在这里收到消息 check false。表示 getimagesize 存在问题。 我也可以传递文件大小138kb,但如果图像上传成功但其他类型文件无法上传,但我需要上传那些。请帮助我。

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

3条回答 默认 最新

  • dongshan3759 2016-11-28 06:59
    已采纳

    At the very top of the file, add these code to enable php error.

    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);
       }
      }
     ?>
    
    点赞 打赏 评论
  • dtotwai720621 2016-11-28 07:01

    Call getImagesize function conditionally.If file type is image then should it get call.

    点赞 打赏 评论
  • duanji1902 2016-11-28 07:06

    do check the uploaded file is an image before calling getimagesize().

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

    also add condition $check != NULL in the if-else block

    点赞 打赏 评论

相关推荐 更多相似问题