Скрипт загрузки файла Php не будет загружать JPEG? - PullRequest
0 голосов
/ 10 мая 2018

У меня есть сценарий загрузки, который я позаимствовал и изменил несколько раз, эхо закомментировано, так как окончательный вывод - PDF.

У меня два вопроса, первый - важный, почему я не могу загрузить .jpeg? Я могу загрузить .png и .jpg нормально?!

$target_dir = "../uploads/";
$target_file = $target_dir . basename($_FILES["brakeTestPic"]["name"]);
$uploadOk = 1;
$imageFileType = strtolower(pathinfo($target_file,PATHINFO_EXTENSION));
// Check if image file is a actual image or fake image
if(isset($_POST["submit"])) {
    $check = getimagesize($_FILES["brakeTestPic"]["tmp_name"]);
    if($check !== false) {
        //echo "File is an image - " . $check["mime"] . ".";
        $uploadOk = 1;
    } else {
        //echo "File is not an image.";
        $uploadOk = 0;
    }
}
// Check if file already exists
if (file_exists($target_file)) {
    //echo "Sorry, file already exists.";
    $uploadOk = 0;
}
// Check file size
if ($_FILES["brakeTestPic"]["size"] > 5000000000000000) {
    //echo "Sorry, your file is too large.";
    $uploadOk = 0;
}
// Allow certain file formats
if($imageFileType != "jpg" && $imageFileType != "png" && 
    $imageFileType != "jpeg" && $imageFileType != "gif" ) 
{

    //echo "Sorry, only JPG, JPEG, PNG & GIF files are allowed.";
    $uploadOk = 0;
}
// Check if $uploadOk is set to 0 by an error
if ($uploadOk == 0) {
    //echo "Sorry, your file was not uploaded.";
    // if everything is ok, try to upload file
} else {
    $temp = explode(".", $_FILES["brakeTestPic"]["name"]);
    $newfilename = round(microtime(true)) .'1'. '.' . end($temp);
    move_uploaded_file($_FILES["brakeTestPic"]["tmp_name"], $target_dir . 
    $newfilename);
    $braketestpiclocation = $target_dir . $newfilename;
};

РЕДАКТИРОВАТЬ - я удалил второй вопрос, который был дубликатом.

1 Ответ

0 голосов
/ 11 мая 2018

Я запустил твой код, и все работает отлично. Проверьте снова файл, который вы загружаете. Также вы можете изменить условие проверки формата файла на:

if( ! in_array($imageFileType, ['jpg', 'jpeg', 'gif', 'png']) ) {

}

Это проще и удобочитаемее.

Мои данные из $ _FILES:

Array ( 
   [brakeTestPic] => Array ( 
      [name] => Deski.JPEG 
      [type] => image/jpeg 
      [tmp_name] => /private/var/tmp/phpL8CKhq 
      [error] => 0 
      [size] => 21746
    )
)

Не забудьте добавить enctype = "multipart / form-data" в тег формы.

...