0

I have an 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. Here is my code:

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

            }

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.

5
  • Print your $_FILES and check if the file is actually uploaded or any other issue ? print_r($_FILES); exit; Commented Nov 28, 2016 at 6:59
  • @Ima: I have already printed and got that message there. Commented Nov 28, 2016 at 7:00
  • @RuhulAmin : Please check my comment on your post.I did as per you but same issue. Commented Nov 28, 2016 at 7:05
  • can you show you html code as well? Commented Nov 28, 2016 at 7:08
  • @satya, see my updated code. Commented Nov 28, 2016 at 7:17

4 Answers 4

1

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);
   }
  }
 ?>
Sign up to request clarification or add additional context in comments.

2 Comments

@ Rahul : No,its not working. Its printing that message check false again.
what is the original error message you are getting, using error_reporting(-1); ini_set('display_errors', 'On'); set_error_handler("var_dump");
0

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

1 Comment

@ snehal : I need to allow all type file.
0

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

Comments

0

Go to all PHP ini files and change the post_max_size to a high value .I also had the problem and I set it to 10000M

post_max_size=10000M

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.