MySQLにバイナリデータを正常に保存できない
ローカルに保存してあるファイルをMySQLにバイナリデータとして格納して保存したいと思ってます。
データは格納できるのですが、文字エンコード?の問題でファイルが壊れてしまっているみたいです。
格納後、出力した際にjpgなどの画像は問題なく表示されるのですが、xlsやpdfなどのファイルが開けなくなります。MySQLの文字コードはUTF8です。
#!/usr/bin/perl
use DBI;
my $dbh = DBI->connect('DBI:mysql:database:localhost:3306', 'user', 'password');
# ファイルパス
my $file = '/tmp/test.xls';
# ファイルサイズ
my $size = -s $file;
# バイナリデータ読み込み
my $line;
open(IN, $file);
binmode(IN);
sysread(IN, $line, $size);
close(IN);
# DBに格納
my $sth = $dbh->prepare(qq|INSERT INTO file_table ( `file_name`, `file_data` ) VALUES (?, ?)|);
$sth->execute('test.xls', $line);
$dbh->disconnect;
上記のようなコードなのですが、おかしな点があれば教えてください。
よろしくおねがいします。
お礼
やはりパスだけ入れる方が一般的なのかも知れませんね。 今回はデータベース上で画像も含めて一元管理する方法を 覚えて見たいと思っておりますので 分かる方がいらっしゃいましたら引き続きよろしくお願いします。