mysql:2675
From: Ko Tanikawa <Ko Tanikawa <dev@xxxxxxxxxx>>
Date: Sat, 04 Nov 2000 15:31:30 GMT
Subject: [mysql 02675] MyODBC 経由で JPEG ファイルを書き込むには?
こんにちは,谷川です。 現在, Delphi で作成した Windows ソフトから,リモートの MySQL サー バの blob フィールドへ JPEG イメージを書き込もうとしているのです が,なかなかうまくいきません。 カラム一覧 SID smallint not null, ItemId integer not null, FileId tinyint not null, ImgBinary mediumblob, MySQL サーバーは Linux 上で動作していますが, Delphi からは, MyODBC-2.50.29 の SJIS 版経由で接続しています。(バイナリファイル をコード変換しないため) Delphi からは,大体下記のようにして書き 込んでいます。 ---------------------------------------------- fm := TMemoryStream.Create; jpg := TJPEGImage.Create; jpg.LoadFromFile(FileName); jpg.SaveToStream(fm); //JPEGのバイナリデータをメモリーストリームfmへセーブ with TQuery.Create(self) do begin DatabaseName := Database1.DatabaseName; SQL.Text := 'replace MItemImg (SID,ItemId,FileId,ImgBinary) ' + ' values (:SID,:ItemId,:FileId,:ImgBinary)'; ParamByName('SID').AsInteger := SID; ParamByName('ItemId').AsInteger :=ItemId; ParamByName('FileId').AsInteger := FileId; ParamByName('ImgBinary').LoadFromStream(fm,ftBlob); //fmからバイナリデータを読み込んでカラムへセット try ExecSQL; finally Free; jpg.Free; fm.Free; end; end; ---------------------------------------------- 一応書き込めるのですが,正しく書き込まれません。(画像によっては, まれに良いこともある)例えば, http://www.agapesystem.com/receive.php?SID=2&FileId=1&ItemId=8 http://www.agapesystem.com/receive.php?SID=2&FileId=1&ItemId=38 のようになってしまいます。 Delphi からは他にも色々な方法で試して みたのですが,何とか画像らしきものが現れるのは上記のコードでした。 ちなみに,クライアントに Windows 版の PHP3 をインストールし,下記 のコードを直接ダブルクリックして (php3.exe から? ) 実行すると, ものの見事に書き込んでくれます。 ---------------------------------------------- <? $jpegfile=JPEG画像ファイル名; $conn=mysql_connect($HOST,$USERID,$PASSWD); mysql_select_db($DBNAME,$conn); $fp=fopen($jpegfile,"r"); $Binary=addslashes(fread($fp, filesize($jpegfile))); fclose ($fp); $sql = "replace MItemImg (SID,ItemId,FileId,ImgBinary) values (2,108,1,'$Binary')"; $result = mysql_query($sql); ?> ---------------------------------------------- 上記PHPで書き込んだ例 http://www.agapesystem.com/receive.php?SID=2&FileId=1&ItemId=108 http://www.agapesystem.com/receive.php?SID=2&FileId=1&ItemId=138 何としても Delphi から直接書き込みたいんですが,何かヒントがござ いましたら,ぜひご教示頂ければ幸いです。 m(_ _)m サーバー側MySQL:Ver 3.22.32 (on RedHat Linux 6.1J) クライアント側:サーバー:Ver 3.23.27-beta クライアント:3.23.22-beta クライアントOS:Windows98 MyODBC Ver 2.50.29 -- Thanks in advance, --------------------------------------------- 谷川剛一 dev@xxxxxxxxxx
-> 2675 2000-11-05 00:31 [Ko Tanikawa <dev@xxx] MyODBC 経由で JPEG ファイルを書き込むには? 2676 2000-11-05 01:45 ┗["MIYATSU Kazunari" <] 2681 2000-11-06 00:47 ┗[Ko Tanikawa <dev@xxx]