Reputation: 3560
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.
Upvotes: 0
Views: 2477
Reputation: 1
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
Upvotes: 0
Reputation: 1775
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);
}
}
?>
Upvotes: 1
Reputation: 149
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
Upvotes: 0
Reputation: 74
Call getImagesize function conditionally.If file type is image then should it get call.
Upvotes: 0