初めまして、ご覧いただきありがとうございます。説明させてください:
データベースの longblob フィールドに配置したいディスク上の画像があります。これは一般的に推奨されていないことを読みましたが、これはまだ私のアプリケーションで必要なものです。
画像をインポートするために、クラスに次のコードがあります。
$file_handle = fopen("$folder_path/$image","rb");
$file_content = fread($file_handle,filesize("$folder_path/$image"));
$image_record["file_name"] = $image;
$image_record["file_folder_id"] = $folder_data["folder_id"];
$image_record["file_owner_id"] = $this->current_user_data["user_id"];
$image_record["file_mime_type"] = mime_content_type("$folder_path/$image");
$image_record["file_binary"] = addslashes($file_content);
if($this->db_insert("file", $image_record))
{
$this->view_file($this->load_file($image));
echo header("Content-type:".$image_record["folder_type"]);
$this->view_file($this->load_file($image));
echo stripslashes($image_record["folder_binary"]);
}
バイナリをデータベースに保存しようとすると、そのプロセスによって画像データが破損しているようです。
同じ正確なコードを使用すると、 $db->insert() ステートメントは、ほぼ同一のデータベース スキーマを持つ別の Web サイトで問題なく動作します。ただし、動作するストレージ エンジンは MyISAM ではなく InnoDB です。
if ステートメント内のコードは常に画像を表示するため、ファイルを読み取ったり表示したりするときにデータの破損が発生するのではないかと疑っています。
何が起こっているのか理解するのを手伝ってください。
ありがとう!