-1

こんにちは、「store」というデータベースのテーブルに画像をアップロードしようとしていますが、うまくいきません。エラーは表示されていませんが、アップロードしたエラー メッセージが表示されるので、構文に問題はありません。

私が書いた2つの相互リンクPHPファイルは次のとおりです。

index.php

    <html>
    <body>
    <form action="index.php" method="POST" enctype="multipart/form-data">
 File:
<input type="file" name="image"><input type="submit" value="Upload">
     </form>

    <?php
     // connect to database
    include "connect.inc.php";

     //file properties
     $file = $_FILES['image']['tmp_name'];

     if(!isset($file))
echo "Please select an image.";
     else
      {
      $image = addslashes(file_get_contents($_FILES['image']['tmp_name']));
      $image_name = addslashes($_FILES['image']['name']);
      $image_size = getimagesize($_FILES['image']['tmp_name']);

      if($image_size==FALSE)
   echo "That's not an image.";
    else
    {
if (!$insert = mysql_query("INSERT INTO store VALUES  ('','$image_name','$image')")) 
    echo "Problem uploading image.";        
else
{
 $lastid = mysql_insert_id();
 echo "Image uploaded.<p />Your image:<p /><img src=get.php?id=$lastid>";
}
    }
   }    
   ?>
  </body>
  </html>

get.php

       <?php
include "connect.inc.php";

$id = addslashes($_REQUEST['id']);

$image = mysql_query("SELECT * FROM store WHERE id=$id");
$image = mysql_fetch_assoc($image);
$image = $image['image'];

header("Content-type: image/jpeg");

echo $image;

?>
4

1 に答える 1

0

ファイルの内容の読み取りと転送に問題があります。ファイルの内容がデータベース フィールドに配置されていないようです。このフィールドの長さを確認してください。内容が非常に長くなる可能性があります (mediumtext または longtext)。

また、アップロードするファイルのタイプを確認する必要があります。関数「mime_content_type」で確認できます。ユーザーがgifをアップロードする場合。または .png ファイル ヘッダー("Content-type: image/jpeg") を使用すると間違った情報が設定されるため、より用途の広いヘッダー ヘッダー("Content-type: image/*") を使用できます。

メソッドには多くの脆弱性があるため、ライブサイトの PDO またはその他の ORM に使用します。

于 2013-02-04T16:21:12.867 に答える