2017-01-07 10 views
1

私はSQLテーブルimgTblを持っていますが、カラムの1つにタイプMEDIUMBLOBがあります。私はその列に次のものを入れました:イメージBLOB列mySQLを扱う方法PHP

LOAD_FILE(“E:/wamp64/tmp/test.jpg”)); 

質問:私はこの画像をPHPで使いたいと思います。私は<?php echo base64_encode(...); ?>イメージデータにする必要があることを読んだが、私は他の列を持っているときにエンコードするために、その列を単一にする方法はありますか?私のPHPクエリは以下の通りです:

エコーは、最終的なJSON形式に渡されます。あなたの質問に答えるために

+0

これは実際のコードですか。 'LOAD_FILE(" E:/wamp64/tmp/test.jpg "));' - そうなら、それらの中括弧はあなたのコードを窒息させ、エラー報告はそれについてあなたに語ったでしょう。 –

+0

はい、私はここでそれらをコピーしたときに中括弧が現れた理由はわかりませんが、実際には普通の引用符であり、ファイルを挿入するときにエラーは表示されませんでした – sandboxj

+0

phpのエラー報告を使用し、mysqli_error –

答えて

1

:MySQLデータベースに画像を保存

は、ファイルの他のタイプの保存と違いはありません。画像を保存するときは、mime_content_type()を使用してコンテンツタイプも保存する必要があります。これにより、が正しくデータベースから取得するときにイメージを再構成できます。

イメージのバイナリデータをページにエコーすることはできません。その形式では何も意味しないからです。

ウェブページに画像が表示されるのは、ブラウザがGETリクエストをサーバーに送信し、サーバーが画像のMIMEタイプのコンテンツを返したためです。

あなたは簡単にこのような生のバイナリデータを指すように<image>タグにURIを使用することができます。上記のタグで、MIMEタイプが指定されていることを

<img src="data:<?php echo $imageMimeType; ?> ; base64, <?php echo $binaryImage; ?>"> 

は注意してください。

いくつかの提案:テーブル全体から他の関連する分野のすべての画像のすべてを返しますPDO

  • あなたの現在のmysqliのクエリを使用して

    • スタート。私はだと思います。あなたはwhere句を使用しようと思ったかもしれません。
    • データベースに画像を保存するのは面倒で、一般的にファイルはデータベースの候補ではありません。イメージは小さいかもしれませんが、ファイルシステムは通常、それらを格納するための最良の候補です。イメージを格納するフォルダ構造を簡単に設定し、データベースを使用してパスを保存することができます。
  • +0

    私の計画では、このエコーをjavascriptの$ http.post( "getData.php")の変数に代入していました。 scope.myList); });そしてそれを角度ng-repeatで使用します。私のメインページは実際にはPHPではなくhtmlですが、私はインライン 'data:image/png; base64、{{listElement.image}}'を使って元に戻すことを計画しました。これはpdoとmimeなしで動作しますか? – sandboxj

    +1

    PDOがなくても動作しますので、PHPでデータベースにアクセスする最も最新の方法であるため、使用することをお勧めします。誤解される可能性があります。MYSQLiは推奨されていません。提供するメソッド(php、js、angular)に関係なく、コンテンツの内容をブラウザに伝える必要があることを理解することが重要です。最後に「.mp3」のない曲を送ってきて、それが曲だとは言わずに、どうやって聞くことができますか?あなたの例では、 'image/png' *はMIMEタイプです。画像の種類が変更された場合(png、jpg、gif ...など) –

    関連する問題