-1

PHP で画像をアップロードしています。画像は.jpgタイプですが、アップロードするとエラー0が発生します。

これは私のコードです。

if(isset($_FILES["image_file"]["name"])){
    $allowedExts = array("gif", "jpeg", "jpg", "png");
    $extension = end(explode(".", $_FILES["image_file"]["name"]));
    if ((($_FILES["image_file"]["type"] == "image/gif")
    || ($_FILES["image_file"]["type"] == "image/jpeg")
    || ($_FILES["image_file"]["type"] == "image/jpg")
    || ($_FILES["image_file"]["type"] == "image/pjpeg")
    || ($_FILES["image_file"]["type"] == "image/x-png")
    || ($_FILES["image_file"]["type"] == "image/png"))
    //&& ($_FILES["image_file"]["size"] < $size)
    && in_array($extension, $allowedExts))
      {
      if ($_FILES["image_file"]["error"] > 0)
        {
        echo "Return Code: " . $_FILES["image_file"]["error"] . "<br>";
        }
      else
        {
            $generate_random_number = rand(1,1000);
            $random_image_name = $generate_random_number.$_FILES["image_file"]["name"];
          if (file_exists($upload_dir_path.$random_image_name))
              {
                //echo $_FILES["file"]["name"] . " already exists. ";
              }
          else
          {
            move_uploaded_file($_FILES["image_file"]["tmp_name"],
            $upload_dir_path.$random_image_name);
          }
        }
      }
    else
      {print_r($_FILES);
        echo "Invalid file";
      }

}

実行すると、次の出力が表示されます。

Array ( [image_file] => Array ( [name] => Chambers_block_study.JPG [type] => image/jpeg [tmp_name] => /tmp/phpghmfM2 [error] => 0 [size] => 2656165 ) )

無効なファイル

助けてください。ありがとう!

4

3 に答える 3

1

エラー 0 はエラーがないことを意味するので、すべて問題ないはずです。問題が発生している場合、ファイルのアップロード自体が原因ではありません。

補足: JPG 画像を検出するgetimagesize()には、拡張子や MIME タイプをチェックする代わりに使用することをお勧めします。これらはクライアントによって設定され、偽造することができます。

例:

$info = getimagesize($_FILES["image_file"]["tmp_name"]);

if ($info == false) 
 {
 echo "Image is not a valid image file";
 // do whatever
 }
于 2013-07-08T07:17:37.110 に答える
1

おそらく大文字と小文字が区別されるためですjpg。配列にはありますが、ファイルはJPG tryで終わります

in_array(strtolower($extension), $allowedExts)
于 2013-07-08T07:18:15.253 に答える
0

PHPマニュアルから直接:

UPLOAD_ERR_OK
Value: 0; There is no error, the file uploaded with success.

これは、ファイルが正しくアップロードされたことを意味します。

ユーザーが拡張子 .JPG のファイルをアップロードすると、if ステートメントは失敗します。したがって、画像の拡張子を確認するには、次のようなものを使用したいと思います。

$image_ext =  strtolower(pathinfo($_FILES["image_file"]["name"],PATHINFO_EXTENSION));

また、getimagesize()画像の有効性を確認するために使用することをお勧めします。次のように使用できます。

$isImageValid = @getimagesize($image_tmp);
if($isImageValid){
//do whatever
}

お役に立てれば!

于 2013-07-08T07:22:00.270 に答える