2012-03-13 20 views
1

ゲストからスナップショットを取得するウェブカメラウィジェットがあります。私のゲストテーブルは画像フィールドを持っていて、私はこの写真をそこに保存したい。私は生のバイナリデータ、ベース64エンコードされたデータを格納しようとしましたが動作しませんでした。データベースが正しいデータを受け取っているのか、返されたデータをうまく処理しないのか分かりません。私のアプリでPDOを使用していて、64 kbより大きいデータで問題が発生する可能性があることをウェブで読み取ったことがありますか?PHPとSQL Server - イメージフィールドからイメージを取得

これは私がウェブカメラからの画像データを得た方法である:

$imagem = file_get_contents('php://input'); 

私はこのようその後、画像の純粋なデータを保存しようとした$imagemと上記の言ったように:

$data = @unpack("H*hex", $imagem); 
$imagem_bd='0x'.$data['hex']; 

の両方のために私はbase64でエンコードしようとしましたが、どれもうまくいきませんでした。

ちょっとした情報:私が働いているこのアプリは、この機能も備えた別の同様のアプリのリメイクですが、この古いアプリではTSQLを使用していてうまく動作します。

ありがとうございます。

EDIT

今の私はがよくを挿入行っているが、私はを取得し、ブラウザで画像をレンダリングすることはできません。

+0

誰でも????????? – DontVoteMeDown

答えて

3

base64ではなくblobでイメージをエンコードできます。しかし、私はファイルとして画像を保存し、データベースへの画像へのリンクを保存することをお勧めします。データベースにイメージを格納すると、大きなスペースを消費する可能性があります。また、それを返すと、サーバーを食べる可能性があります。また、ファイルシステムに比べて読み込みに時間がかかることがあります。あなたがPreparedStatementを使用している場合

+0

ええ、私は知っていますが、これは好ましくはこの方法でなければなりません。どのようにblobとしてエンコードするのですか?どうすればいいですか?ありがとうございました。 – DontVoteMeDown

+0

www.techcubetalk.com/2009/01/tutorial-on-how-to-store-images-in-mysql-blob-field/ そのリンクを確認してください。 –

1

、あなたがする必要があるすべてはあなたのバイナリイメージで、bindValueを使用している:

とにかく
$sql = "INSERT INTO your_table (image) VALUES (?)"; 
$stmt->bindValue(1, $imagem); 
$stmt->execute(); 

、ここで言ったように、それはデータベースに画像を保存するためには良い考えではありません。

テーブルのカラムのデータタイプによって異なります(MySQL、BLOBタイプの制限は64KBですが、MEDIUMBLOBやLONGBLOBなどの別のタイプのデータがあります)。

+0

これまでのところ大丈夫です、私の編集をご覧ください。 – DontVoteMeDown

関連する問題