2011-11-10 13 views
1

스폰서 쉽 관리 웹 사이트를 구현 한 후 몇 가지 문제가 발생했습니다. 데이터베이스에 이미지를 저장하는 것이 목에 통증이 될 수는 있지만 이것이 필요합니다 (캠퍼스 서버에 이미지를 저장하는 파일 시스템 금지).테이블의 셀로 데이터베이스의 이미지 표시

내가 3 개 테이블을 만들 :

  • 정보 테이블에 저장하는 텍스트 정보,
  • 이미지 ID의 기록을 유지 참조 테이블로 BLOB 방식으로 이미지와
  • id_table 테이블을 저장하는 이미지 테이블과 정보 ID.
    $result=mysql_query("SELECT info_id,info_name,info_year,info_level,info_email,info_describe FROM info"); 
    while($row = mysql_fetch_array($result)) 
    { 
        echo "<td>" . $row['info_name'] . "</td>"; 
        echo "<td>" . $row['info_year'] . "</td>"; 
        echo "<td>" . $row['info_level' ] . "</td>"; 
        echo "<td>" . $row['info_email'] . "</td>"; 
        echo "<td>" . $row['info_describe'] . "</td>"; 
        $result_image_id = mysql_query("SELECT id_image FROM id_table WHERE id_info = '{$row['info_id']}'"); 
        $row_image = mysql_fetch_array($result_image_id); 
        $result_image = mysql_query("SELECT image_stuff FROM image WHERE image_id = '{$row_image['id_image']}'"); 
        $row_2 = mysql_fetch_array($result_image); 
        $content=$row_2['image_stuff']; 
        echo "<td>" ; 
        header('Content-type: image/jpeg'); 
        echo $content; 
        echo "</td>"; 
        echo "</tr>"; 
    } 
    


는 다음 브라우저에서, 나는 빈 페이지로 이동했다. 해당 머리글 함수를 삭제하면 페이지에 테이블이 있지만 이미지 열에는 아무 것도 없습니다.

제안 사항?

또한, 내 while 루프에서 <img> 태그를 사용하여 시도 :

echo "<img src='$content' />"; 

좋은 소식은, 그것은 종류의 밖으로 일을하지만, 이미지 파일이 실제적으로 표시되지 않았습니다.

이미지 파일로 채워진 이미지 열이있는 페이지가있는 테이블을 만들었지 만 서버가 이미지를 찾지 못했던 것처럼 보입니다.

img 태그를 적용 할 때 데이터베이스에 이미지 파일을 업로드 한 행이 "셀을 표시 할 수 없음"로고 만 셀에 나타나기 때문에 삽입 스크립트에 문제가없는 것으로 생각됩니다. . 그런

답변

2

당신 캔트 사용하는 헤더는 ...

$result=mysql_query("SELECT info_id,info_name,info_year,info_level,info_email,info_describe FROM info"); 
while($row = mysql_fetch_array($result)) 
{ 
echo "<td>" . $row['info_name'] . "</td>"; 
echo "<td>" . $row['info_year'] . "</td>"; 
echo "<td>" . $row['info_level' ] . "</td>"; 
echo "<td>" . $row['info_email'] . "</td>"; 
echo "<td>" . $row['info_describe'] . "</td>"; 
$result_image_id = mysql_query("SELECT id_image FROM id_table WHERE id_info = '{$row['info_id']}'"); 
$row_image = mysql_fetch_array($result_image_id); 
$result_image = mysql_query("SELECT image_stuff FROM image WHERE image_id = '{$row_image['id_image']}'"); 
$row_2 = mysql_fetch_array($result_image); 
$content=$row_2['image_stuff']; 
echo "<td>" ; 
echo '<img src="data:image/png;base64,' . base64_encode($content) . '" />'; 
echo "</td>"; 
echo "</tr>"; 
} 

변경하면 저장된 어떤 이미지의 유형에 대한 PNG 같은 것을보십시오. 나는 코드를 많이 보지 않았지만 이것이 효과가있다.

+0

$ content를 인코딩하지 않으면 http : // localhost/project_name/Array가 임의의 이미지 URL로 표시됩니다. 이미지 열에 '로고가 표시되지 않습니다.'라는 메시지가 나타납니다. 가능한 경우 이미지 삽입 스크립트에 문제가 있습니까? – jasonkim

+0

코드를 저장하는 이미지 게시. – holycowbatman

+0

'base64_encode()'는 바이너리 이미지를 가져 와서 ASCII 문자로 변환 할 때 쓰이는 대역폭입니다. 이미지를 디스크에 저장하거나 데이터베이스에 이진 이미지를 저장하지 않는 것이 좋습니다. 웹에 액세스 할 수있는 파일 시스템에 바이너리 이미지의 경로를 저장하십시오. –

0

에코 "". $ row [ 'post_image']. ""

+0

이것이 어떻게 질문 작성자에게 도움이되는지 설명해주십시오. –

관련 문제