2014-11-20 2 views
2

StackOverflow에 대한 모든 가능한 질문을 읽고, 내가 아는 모든 사람들에게 물었습니다. 아무도 저를 도울 수 없습니다. 나는 데이터베이스에 테이블이 :PHP 이미지를 BLOB로 표시 mysqli

CREATE TABLE IF NOT EXISTS `zdjecia` (
`id` int(11) NOT NULL, 
    `imie_wlasciciela` varchar(50) NOT NULL, 
    `zdjecie` blob NOT NULL, 
    `nazwa` varchar(50) NOT NULL 
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=16 

내가 더 영어 ​​변수 미안 해요,하지만 난 변경없이 모든 소스를 유지하려는. imie_wlascicielanazwa은 내 문제에서는 중요하지 않습니다. 그래서 zdjecie은 의 이진 데이터이고 id은 id입니다.

이미지가 표시되어야하는 파일이 있습니다.

// single_image.php

<?php 

if (isset($_GET['id'])) 
{ 
    include('../connect.php'); // connect to database 
    $id = $_GET['id']; 
    $ret = $conn->query("SELECT * FROM zdjecia WHERE id=$id"); 
    $row = $ret->fetch_assoc(); 
    header("Content-type: image/png"); 
    echo $row['zdjecie']; 
    // echo $row['nazwa']; // correct the result. 
} 
?> 

그리고 내 브라우저 URL에

I 붙여 .../single_image.php? ID = 8

내 문제가 표시되지 않는 이미지 나 데이터베이스가됩니다 이미지가 거의 없습니다. XAMPP에서/phpmyadmin으로 다운로드 할 수 있으며 올바른 이미지이지만 내 페이지가 올바르게 표시되지 않습니다. 깨진 이미지 아이콘이 나타날 때마다.

파일 single_image.php는 코드 없음 1250 (중앙 유럽어)으로 설정됩니다.

결과를 $row['nazwa'] (으)로 확인하고 header("Content-type...") 행을 주석 처리하면 데이터베이스에서 varchar(50)이 올바르게 표시됩니다. 제가 위에서 쓴 몇 줄처럼 사용하거나 HTML에있어

,

+0

을 위해 작동 할 헤더로 data:image/png;base64을 추가 할 수 있습니다 html 쪽 이미지 소스에. hakiko

+0

i dont understand your last sentence. there is no source code in page when there is only an image. – Jan3Sobieski

+0

If you change your file's extention to png you must change its image header info. I assumed, you only changed file name from xx.jpg to xx.png Sometimes this works but not completely. Still your file has .jpg info. So please give some more details about your images – hakiko

답변

2

시도

echo '<img src="data:image/png;base64,'.base64_encode($row['zdjecie']).'"/>'; 

보다 더 나은 보수를 들어 당신은 때때로 당신이 슬래시를 추가 "/"해야한다 urlrewrite를 사용하는 경우 만 echo base64_encode($row['zdjecie'])single_image.php?id=$id

+0

it works. image is showed, but i dont know... i wanted to use my file single_image.php as a filepath, so i could in another files write 과 같이 높이와 너비 및 스타일을 조작해야합니다. 즉, 작업 코드를 게시해야합니다. 그러나 그것을 유지하기 힘들다. – Jan3Sobieski

+0

나는 내가 게시 한 아이디어로 해결할 수 있습니다. 만약 내가 잘못하면, 말해봐. 어쩌면 전체 질문은 apeare가 아닙니다. – Jan3Sobieski

+0

어떻게해야합니까? 헤더 ("Content-type : image/png"); 이 일은 헤더로 변경됩니다 ("Content-data : image/png; base64"); ? – Jan3Sobieski

0
  1. <img src="single_image.php?id=8"/>는 DB에 이미지를 저장하지 마십시오, 그것은 성능 자살입니다.
  2. 코드를 SQLinjection에 취약하게 만들지 마십시오.
  3. db에 파일을 저장해야하는 경우 콘텐츠 형식을 저장하십시오. 어쩌면 PNG가 아니겠습니까? 아니면 경고/알림이 출력 되었습니까? 그것은 당신의 이미지를 깨뜨릴 것입니다.
+0

This is not an answer to this question – hakiko

+0

Look at last point ;] –

+0

I have no errors showing by php interpreter or browsware console. i "saved as" few data from database to my documents, change extension to .png and it works fine. i really want to do that with blobl. i know it isnt a good idea. and i know how to defend agains sql injection, but to clear code i remove all. – Jan3Sobieski