0

データベースに画像を挿入しようとしています。私はいくつかの投稿を読みましたが、明らかにこれが間違っています。列のデータ型が画像のブロブである必要があることはわかっています。これは私がやったことです。

私のフォームは次のようになります。

<form id="Dev_test" name="Dev_test" method="post" action="<?php echo htmlspecialchars($_SERVER['PHP']);?>" enctype="multipart/form-data">
<input type="file" name="call_file" id="call_file">
<input type="submit" name="submit" id="submit" value="SUBMIT">
</form>

これは、これを行う方法の複数のバリエーションを見た場所であり、これは不可能かもしれないという投稿に出くわしました.

$query = "INSERT INTO `******`.`******` (img) values ('{$_POST['file']}')"

上記が正しくないことはわかっています。

私の質問は次のとおりです。$_POST['file'] が投稿されない理由はありますか?データベースに画像を挿入するより良い方法はありますか? 参考までに、画像をデータベースに直接挿入することは最も効率的な方法ではなく、ファイル パスを参照する方法が他にもあることを認識しています。

4

2 に答える 2

2

$_FILES代わりに使用したいのは、php のスーパーグローバルです。

$content = file_get_contents($_FILES['call_file']['tmp_name']);

ウイルスチェックなどを行いたい場合があります$content

また、ファイルをデータベースに BLOB として保存するのではなく、システムに保存し、代わりにファイルへのパスを保存することをお勧めします。

于 2013-09-06T16:50:51.610 に答える
1

画像ファイルをDBに保存するには(ファイルシステムはファイルを効果的に保存するために特別に設計されたデータベースであるため、一般的には悪い考えです) 、アップロードされたファイルの内容を読み取ってクエリに入れる必要があります。

PHP では、$_FILES グローバル配列を使用してアップロードされたファイルに関する情報を取得し、is_uploaded_file() を使用してアップロードされたファイルに問題がないかどうかを確認してから、アップロードされたファイルの内容を標準のファイル アクセス関数で読み取る必要があります。ファイルをデータベースに挿入するときにファイルの内容をエスケープします。

于 2013-09-06T16:51:54.137 に答える