18

というファイル フィールドを持つフォームがありますimageが、このフィールドは必須ではありません。
ユーザーがフォームでファイルを選択しない場合、 はdo_upload()常にエラーを返します。
コントローラーでアップロード アクションを実行する前に、ユーザーがファイルを選択したかどうかを確認するにはどうすればよいですか?

4

9 に答える 9

42

empty()を使用してください

if (empty($_FILES['userfile']['name'])) {
}
于 2012-12-19T13:28:48.077 に答える
5

を使用して、ファイルが有効かどうかを確認してくださいis_uploaded_file()。例えば:

if(is_uploaded_file($_FILES['userfile']['tmp_name'])) 
{  
   do_upload();
}
于 2012-12-19T13:28:13.677 に答える
5

コントローラーで、送信されたフォームを受け取る関数で:

if (isset($_FILES['image']['name']) && !empty($_FILES['image']['name'])) {
    // do_upload

}
于 2012-12-19T13:28:27.220 に答える
1

ファイルのアップロードを確認するには、ネイティブの php コードを使用するだけです。

if(!file_exists($_FILES['myfile']['tmp_name']) || !is_uploaded_file($_FILES['myfile']['tmp_name'])) {
echo 'No upload';
 }
于 2015-07-24T05:26:41.673 に答える
1

PHPでファイルフィールドが空かどうかを確認する完全なスクリプトは次のとおりです

<!DOCTYPE html>
<html>
<body>

<form action="#" method="post" enctype="multipart/form-data">
    Select image to upload:
    <input name="my_files[]" type="file" multiple="multiple" />
    <input type="submit" value="Upload Image" name="submit">
</form>


<?php

 if (isset($_FILES['my_files']))
  {
    $myFile = $_FILES['my_files'];
    $fileCount = count($myFile["name"]);


        for ($i = 0; $i <$fileCount; $i++)
         {
           $error = $myFile["error"][$i]; 

            if ($error == '4')  // error 4 is for "no file selected"
             {
               echo "no file selected";
             }
            else
             {

               $name =  $myFile["name"][$i];
               echo $name; 
               echo "<br>"; 
               $temporary_file = $myFile["tmp_name"][$i];
               echo $temporary_file;
               echo "<br>";
               $type = $myFile["type"][$i];
               echo $type;
               echo "<br>";
               $size = $myFile["size"][$i];
               echo $size;
               echo "<br>";



               $target_path = "uploads/$name";   //first make a folder named "uploads" where you will upload files


                 if(move_uploaded_file($temporary_file,$target_path))
                  {
                   echo " uploaded";
                   echo "<br>";
                   echo "<br>";
                  }
                   else
                  {
                   echo "no upload ";
                  }




              }
        }  
}
        ?>


</body>
</html>

しかし、注意してください。ユーザーはあらゆる種類のファイルをアップロードでき、悪意のあるファイルや php ファイルをアップロードしてサーバーやシステムをハッキングすることもできます。このスクリプトでは、いくつかの検証が必要です。

http://www.techzigzag.com/how-to-check-that-user-has-upload-any-file-or-not-in-php/を参照してください

それがあなたを助けることを願っています。

于 2015-07-22T13:13:45.297 に答える
0

ファイルアップロードエラー「ファイルが選択されていません」は4番なので、これを行う正しい方法は次のとおりです。

if ($_FILES['my_image_field_name']['error'] !== 4){
    if ($this->upload->do_upload('my_image_field_name')) { ...

名前または tmp_name で確認する場合、これらのフィールドに入力されなかった理由が他にある可能性があり、これらを見逃す可能性があります。

于 2013-10-22T17:02:29.190 に答える
0

empty() empty 関数を使用すると、ファイル フィールドが空かどうかがチェックされます

if ( ! empty($_FILES)) {...}


if(!empty($_FILES['myFileField'])) {
    // file field is not empty..
} else {
    // no file uploaded..
}
于 2012-12-19T13:26:51.997 に答える