2012-03-13 3 views
1

그래서 손님으로부터 스냅 샷을 찍을 웹캠 위젯이 있습니다. 내 손님 테이블에 이미지 필드가 있으며이 사진을 저장하고 싶습니다. 내가 원시 이진 데이터, base64 인코딩 된 데이터를 저장하려고했는데 작동하지 않았다. 데이터베이스가 올바른 데이터를 수신하고 있는지 또는 반환 된 데이터를 제대로 처리하지 못했는지 여부는 알 수 없습니다. 내 응용 프로그램에서 PDO을 사용하고 있는데 웹에서 보다 큰 데이터에 문제가있을 수 있다는 것을 읽었습니다. 64 kb, 누구나 사실인지 알 수 있습니까? PHP와 SQL Server - 이미지 필드에서 이미지 검색

내가 웹캠에서 이미지 데이터를 가지고하는 방법이다 : 나는 이미지의 순수 데이터 $imagem를 저장하려 위에 말했듯이

$imagem = file_get_contents('php://input'); 

다음이 방법 :

$data = @unpack("H*hex", $imagem); 
$imagem_bd='0x'.$data['hex']; 

그리고 모두

그 중 내가 시도했습니다 base64 너무 인코딩 된 있지만 아무도 작동합니다.

정보 :이 응용 프로그램은이 기능이있는 다른 유사한 응용 프로그램을 다시 만들었지 만이 이전 응용 프로그램에서는 TSQL을 사용했으며 정상적으로 작동합니다.

감사합니다.

편집

는 지금 내가 잘 삽입했을, 그러나 나는과 브라우저에서 이미지를 렌더링 검색 할 수 있습니다.

+0

누구든지 ????????? – DontVoteMeDown

답변

3

base64 대신 blob로 이미지를 인코딩 할 수 있습니다. 하지만 이미지 파일에 저장하고 데이터베이스에 이미지 링크를 저장하는 것이 좋습니다. 데이터베이스에 이미지를 저장하면 공간이 많이 소모 될 수 있으며 반환 할 때 서버를 먹을 수도 있고 파일 시스템에 비해로드하는 데 더 많은 시간이 걸릴 수도 있습니다. 당신이 PreparedStatement를 사용하는 경우

+0

그래, 나도 알아,하지만이 방법이 선호되어야한다. 당신은 어떻게 blob로 encode를 sugest합니까, 어떻게하면됩니까? 고맙습니다. – DontVoteMeDown

+0

www.techcubetalk.com/2009/01/tutorial-on-how-to-store-images-in-mysql-blob-field/ 해당 링크를 확인하십시오. –

1

, 당신이 할 필요가 바이너리 이미지, bindValue을 사용할 수 있습니다 : 여기에 말했듯이

$sql = "INSERT INTO your_table (image) VALUES (?)"; 
$stmt->bindValue(1, $imagem); 
$stmt->execute(); 

어쨌든, 그것은 데이터베이스에 이미지를 저장하는 것은 좋은 생각이 아니다.

테이블의 열의 데이터 유형에 따라 다릅니다 (MySQL, BLOB 유형의 제한은 64KB이지만 MEDIUMBLOB 및 LONGBLOB와 같은 다른 유형의 데이터가 있음).

+0

지금까지 괜찮습니다. 편집을 참조하십시오. – DontVoteMeDown

관련 문제