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

时间:2016-11-28 06:55:34

标签: php file-upload

使用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 (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,但如果图像上传成功,但其他类型文件无法上传,但我需要上传那些。请帮助我。

4 个答案:

答案 0 :(得分: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);
   }
  }
 ?>

答案 1 :(得分:0)

有条件地调用getImagesize函数。如果文件类型是图像,那么应该调用它。

答案 2 :(得分:0)

在调用getimagesize()之前检查上传的文件是否为图像。

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

还在$check != NULL

中添加条件if-else

答案 3 :(得分:0)

转到所有PHP ini文件并将post_max_size更改为一个高值。我也遇到了问题,将其设置为10000M

post_max_size=10000M