あなたのプログラムは正しいです。ファイルサイズが小さい場合は、正常に機能します。 BLOB
を使用している場合 そのバイナリデータを格納するデータ型は、LONGBLOB
に変更します 。 BLOB
にファイルを保存しようとした場合 データフィールドであり、ファイルサイズがBLOBデータ型の最大許容サイズを超える場合、コンテンツは切り捨てられ、ファイルの一部のコンテンツが失われます(ファイルサイズによって異なります)。 LONGBLOB
を使用している場合でも データ型チェックしなければならないことがいくつかあります。説明します
mysqlのWebサイトでは、LONGBLOB
の最大ファイルサイズを確認できます。 4GBです。しかし、それは多くのことに依存します。大きなファイルを保存するには、いくつかのことを確認する必要があります。まず、my.ini
にあります ファイルには、max_allowed_packet
というプロパティがあります 、mysqlクライアントまたはサーバーとの間で送受信できる最大のパケットを指定します。 max_allowed_packet
を設定する必要があります より高い値へのプロパティ。そして、mysqlを再起動します。一部のファイルシステムでは、4GBのファイルは許可されません。その場合、それほど大きなファイルをロードすることはできません。
あなたの場合、max_allowed_packet
を設定すると思います プロパティをより高い値にすると、問題が修正されます。
次のテーブル作成スクリプトを使用できると思います
CREATE TABLE `image` (
`id` INT(10) NULL DEFAULT NULL,
`fs` LONGBLOB NULL,
`filen` VARCHAR(50) NULL DEFAULT NULL
)