проверить изображение выбрано или нет в PHP - PullRequest
0 голосов
/ 17 февраля 2012

У меня есть форма для загрузки изображения, как показано ниже

<form  name="sample" enctype="multipart/form-data" action="index.php" method="post" >
<input type="hidden" name="MAX_FILE_SIZE" value="2048000" />
Select an Image: <input name="photo" id="photo" type="file" /> <input type="submit" value="Upload" />
</form>

Теперь я должен проверить что-то вроде ниже ..

If(any file/image selected){
i will check here whether the selected file is a valid image.
}

Я управлял частью проверки, если, но я не могу проверить, выбран ли какой-либо файл или нет. Я использовал следующее условие

if(!empty($_FILES))

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

Пожалуйста, кто-нибудь, помогите мне, как я могу сделать эту работу.

Вот мой полный код PHP:

<?php
// Do not show notice errors
error_reporting (E_ALL ^ E_NOTICE);


if(!empty($_FILES)) // Has the image been uploaded?
{
include 'config.php';

$file = $_FILES['image_file'];

$file_name = $file['name'];

$error = ''; // Empty

// Get File Extension (if any)

$ext = strtolower(substr(strrchr($file_name, "."), 1));

// Check for a correct extension. The image file hasn't an extension? Add one

   if($validation_type == 1)
   {
   $file_info = getimagesize($_FILES['image_file']['tmp_name']);

      if(empty($file_info)) // No Image?
      {
      $error .= "The uploaded file doesn't seem to be an image.";
      }
      else // An Image?
      {
      $file_mime = $file_info['mime'];

         if($ext == 'jpc' || $ext == 'jpx' || $ext == 'jb2')
         {
         $extension = $ext;
         }
         else
         {
         $extension = ($mime[$file_mime] == 'jpeg') ? 'jpg' : $mime[$file_mime];
         }

         if(!$extension)
         {
         $extension = '';  
         $file_name = str_replace('.', '', $file_name); 
         }
      }
   }
   else if($validation_type == 2)
   {
      if(!in_array($ext, $image_extensions_allowed))
      {
      $exts = implode(', ',$image_extensions_allowed);
      $error .= "You must upload a file with one of the following extensions: ".$exts;
      }

      $extension = $ext;
   }

   if($error == "") // No errors were found?
   {
   $new_file_name = strtolower($file_name);
   $new_file_name = str_replace(' ', '-', $new_file_name);
   $new_file_name = substr($new_file_name, 0, -strlen($ext));
   $new_file_name .= $extension;

   // File Name
   $move_file = move_uploaded_file($file['tmp_name'], $upload_image_to_folder.$new_file_name);

   if($move_file)
       {
       $done = 'The image has been uploaded.';
       }
   }
   else
   {
   @unlink($file['tmp_name']);
   }

   $file_uploaded = true;
}

?>

Пожалуйста, проверьте код сейчас. Мне просто нужно изменить строку

if(!empty($_FILES)) 

так, что если кто-то выберет какой-либо файл, то если условие будет истинным, но если он не выберет какой-либо файл, т.е. если они оставят поле пустым, то если условие будет ложным

Ответы [ 6 ]

2 голосов
/ 17 февраля 2012

Вы также можете проверить как:


if(isset($_FILES['photo']) && !empty($_FILES['photo']['name'])) { 
....

2 голосов
/ 17 февраля 2012

Попробуйте

if ($_FILES['file']['error'] === UPLOAD_ERR_OK)
{
 // Your code....
}

Если вы хотите быть более точным для файла, который не был выбран, вы можете также использовать константу UPLOAD_ERR_NO_FILE.

Вы можете найти дополнительную информацию здесь.http://php.net/manual/en/features.file-upload.errors.php

1 голос
/ 17 февраля 2012

Просто попробуйте:

if (isset($_FILES['photo']))

... для mime_type лучше использовать finfo, если доступно.

1 голос
/ 17 февраля 2012

Вы должны сделать что-то вроде этого:

isset($_FILES['photo']) && isset($_FILES['photo']['tmp_name'])

Также вы должны проверить, является ли загруженный файл настоящим изображением, вы можете сделать это с помощью getImageSize () :

Индекс 2 - это одна из констант IMAGETYPE_XXX, указывающая тип изображения.

0 голосов
/ 27 октября 2014

Я согласен с @ DemoUser

if (isset ($ _ FILES ['photo']) &&! Empty ($ _ FILES ['photo'] ['name'])) {}

работает просто отлично

0 голосов
/ 17 февраля 2012

Надеюсь, это поможет

<?php
if (isset($_FILES['photo']))
{
    $mimetype = mime_content_type($_FILES['photo']['tmp_name']);
    if(in_array($mimetype, array('image/jpeg', 'image/gif', 'image/png'))) {
          move_uploaded_file($_FILES['photo']['tmp_name'], '/images/' . $_FILES['photo']['name']);
   echo 'OK';
     } else {
             echo 'Not an image file!';
     }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...