ホームページ  >  記事  >  バックエンド開発  >  MySQLでバイナリアクセスピクチャを取得するには、最初のピクチャを出力する必要があるのですが、ループで出力できないのですか?

MySQLでバイナリアクセスピクチャを取得するには、最初のピクチャを出力する必要があるのですが、ループで出力できないのですか?

WBOY
WBOYオリジナル
2016-06-13 13:05:59973ブラウズ

MySQLでバイナリアクセスピクチャを取得する場合、最初のピクチャしか出力できず、ループで出力できないのですが? ?
画像はバイナリ形式でデータベースに保存されます。最初の画像は while ループを使用せずにブラウザ上で出力できますが、画像が出力される前に出力が文字化けします。 ?
たくさん確認しましたが役に立ちませんでした。専門家のアドバイスをお願いします

PHP コード
<!--

Code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/

-->
<?php
  require_once("conn.php");
  $cover=$_POST['cover'];
  if($_POST['sub']){
    header("Content-Type:image/jpeg",true);
    //以只读的方式打开二进制文件
    $fp=fopen($cover,"rb");
    $image=addslashes(fread($fp,filesize($cover)));
    $sql1="insert into phototest (id,photo) values('','$image')";
    $insert=mysql_query($sql1,$conn);
    $sql2="select * from phototest";
    $select=mysql_query($sql2,$conn);
    //$result=mysql_fetch_array($select);  echo $result[1];//用一条语句能输出一张图片
    ?> <table width="80%" height="80%" border="1"> <?php
    while($result=mysql_fetch_array($select)){
    //echo stripslashes($result['photo']); //stripslashes()去除反斜杠
    ?>
    
       <tr height="400">
          <td> <?php echo $result['photo']?> </td>
       </tr>
    
    <?php
    }
    ?> </table> <?php 
    //关闭文件
    fclose($fp);
?>



----- -解決策-- ------------------
繰り返しになりますが、Content-Type:image/jpeg は、応答コンテンツがバイト ストリームであることを宣言します。また、コードは文字ストリームも出力するため、当然のことながらブラウザはそれを正確に認識して変換できなくなります。
ブラウザ上に複数の画像を表示したい場合は、HTML 形式の標準に従う必要があります。 img タグの src 属性は、file:// http:// data:// などのさまざまなプロトコルをサポートしますが、画像バイト ストリームを直接埋めることはできません。

この木にぶら下がっていないことを願っています。このような無意味で理不尽なプロジェクトを実践しても何も得られないばかりか、学べば学ぶほど混乱してしまいます。
------解決策------------------
私も以前、ストリームの理解に問題がありました。時間があれば、正しい説明を確認してください:
http://zh.wikipedia.org/zh/MIME Con​​tent- で宣言された Mime タイプの意味。 type
content-type が image/jpeg の場合、後続の応答コンテンツは jpeg 形式の画像としてのみ理解できます。
しかし、応答コンテンツが text/html の場合、ブラウザはそれを HTML ドキュメントとして解析します。HTML タグには独自の意味があり、img タグは画像をロードする場所を指定します。 。
http:// の後に URL リンクが続くと、サーバーからのダウンロードが指定され、追加のリクエストが開始されます
file:// の後にファイル アドレスが続くと、ローカル ファイル システムからの読み取りを指定します (ローカル ファイルのみを読み取ることができます)
data:// の後に特別にフォーマットされたテキストが続きます。rfc2397 プロトコルを参照
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。