복붙노트

mysql 데이터베이스에서 내 BLOB 이미지를 표시하려면 PHP 페이지가 필요합니다.

PHP

mysql 데이터베이스에서 내 BLOB 이미지를 표시하려면 PHP 페이지가 필요합니다.

그래서 내 마지막 질문은 검색에서 내 techID를 표시하는 방법에 관한 질문이었습니다.

기술 ID를 통해 연결되는 내 서버의 두 부분을 참조하는 "세부 정보"페이지를 갖기 위해 노력하고 있습니다.

내 새로운 질문은 아직이 페이지에 있습니다. 에코 이미지도 추가했습니다. Blob을 사용하는 데 문제가 있고 이진 JPEG 데이터가 아닌 내 이미지를 표시하는 데 문제가 있습니다. 나는 이것의 또 다른 인스턴스를 찾으려고했지만 내 오류를 수정하는 것을 찾을 수 없습니다.

//Header ('Content-type: image/jpeg')
echo "<dt><strong>Technician Image:</strong></dt><dd>" . '<img src='.$row2['image'].' width="290" height="290">' . "</dd>";

$query_Recordset2 = "SELECT * FROM technician WHERE techID=" . $row1["techID"] ;
$Rs2 = mysql_query($query_Recordset2) or die(mysql_error());

내가 마지막으로했던 질문 (지금까지 주어진 수정본을 포함하여)에서 지금까지 수정 한 내용 만 변경된 것입니까?

내가 이해하지 못하는 것은 어디에서 어떻게 'Content-type : image / jpeg'를 넣어서 내 페이지가 링크되는 이미지를 인식하게하는지이다. 그것은 MIME TYPE image / jpeg이다.

내 페이지에서 볼 수있는 것은

분명히 나는 ​​중간 크기의 덩어리를 삭제하여 엄청난 규모는 아니었다. infront에 나타나는 작은 "깨진 이미지"상자가 있습니다. 오른쪽 버튼을 클릭하고 "새 창에서 이미지 열기"를 선택하면 URL은 단순히 Content-type입니다 : 또는 URL http : /와 함께 금지 된 액세스 페이지가 나타납니다. / localhost / Sim5Server / Pages / % EF % BF % BD % EF % BF % BD % EF % BF % BD % EF % BF % BD % EF % BF % BD % 10JFIF % EF % BF % BD % 01 % 02 % EF % BF % BD % EF % BF % BDd % EF % BF % BDd % EF % BF % BD % EF % BF % BD % EF % BF % BD % EF % BF % BD % EF % BF % BDC % EF % BF % BD

나는 그것이 인터넷을위한 링크가 아니기 때문에 그 URL에 공간을 넣었다.

나는 BLOB 타입을 단지 64KB 이미지보다 작게 사용했다.

해결법

  1. ==============================

    1.현재의 경우 두 가지 선행 옵션이 있습니다.

    현재의 경우 두 가지 선행 옵션이 있습니다.

    첫 번째와 이렇게 많은 이미지가있는 경우 권장하지 않는 것은 인라인 base64 인코딩을 사용하는 것입니다. 이 작업은 다음과 같이 수행됩니다.

    <img src="data:image/jpeg;base64,<?php echo base64_encode($image); ?>" />
    

    기존 코드를 사용하여 복사 / 붙여 넣기 버전 :

    echo '<dt><strong>Technician Image:</strong></dt><dd>'
         . '<img src="data:image/jpeg;base64,' . base64_encode($row2['image']) . '" width="290" height="290">'
         . '</dd>';
    

    두 번째 방법은 데이터베이스의 이미지 ID를 쿼리 문자열 매개 변수로 사용하여 이미지를 출력하는 "이미지"PHP 파일을 만드는 것입니다. 따라서 HTML은 다음과 같습니다.

    <img src="image.php?id=<?php echo $image_id; ?>" />
    

    그리고 PHP 페이지는 다음과 비슷한 모습을 보입니다 :

    <?php
    $id = (isset($_GET['id']) && is_numeric($_GET['id'])) ? intval($_GET['id']) : 0;
    $image = getImageFromDatabase($id); // your code to fetch the image
    
    header('Content-Type: image/jpeg');
    echo $image;
    ?>
    
  2. ==============================

    2.문서와 동일한 페이지에서 이미지를 출력 할 수있는 유일한 방법은 데이터 URI를 사용하는 것입니다.

    문서와 동일한 페이지에서 이미지를 출력 할 수있는 유일한 방법은 데이터 URI를 사용하는 것입니다.

    echo "<dt><strong>Technician Image:</strong></dt><dd>" . 
         '<img src="data:image/jpeg;base64,'.
          base64_encode($row2['image']).
          '" width="290" height="290">' . "</dd>";
    
  3. ==============================

    3.올바른 코드는 아래와 같아야합니다. stream_get_contents ()를 사용하여 리소스 ID를 string으로 변경해야합니다.

    올바른 코드는 아래와 같아야합니다. stream_get_contents ()를 사용하여 리소스 ID를 string으로 변경해야합니다.

    <img src="data:image/jpeg;base64,<?php echo base64_encode(stream_get_contents($row2['image'])); ?>" />
    
  4. ==============================

    4.최선의 해결책은 데이터베이스 경로 대신 이미지 경로를 저장하는 것입니다. 전체 이미지를 BLOB로 저장합니다. 그런 다음 웹 페이지에 이미지를 표시하기 위해 img 태그의 src 속성을 데이터베이스에 저장된 경로에 매핑합니다.

    최선의 해결책은 데이터베이스 경로 대신 이미지 경로를 저장하는 것입니다. 전체 이미지를 BLOB로 저장합니다. 그런 다음 웹 페이지에 이미지를 표시하기 위해 img 태그의 src 속성을 데이터베이스에 저장된 경로에 매핑합니다.

  5. from https://stackoverflow.com/questions/13225726/i-need-my-php-page-to-show-my-blob-image-from-mysql-database by cc-by-sa and MIT license