使用php存储/从数据库中提取图像

时间:2012-03-26 22:28:10

标签: php image download bytea

我正在使用PHP 5.3.5和postgreSQL。我正在从数据库中存储和提取图像。

用于存储我这样做:

 $escaped_data = base64_encode(file_get_contents($_FILES['fileUpload']['tmp_name']));
 $fileModel->setBinary_Data($escaped_data);

它正在工作,我收到了我的数据库中的图像(Bytea字段)。

问题是提取这个,我正在尝试使用此代码来提取我的图像:

$file_info = $fileModel->getBinary_Data($id_file); // This function return the binary_data of the image

header('Content-Type: image/jpeg;base64');
header('Content-Disposition: attachment; filename=' . $file_info['_name']);
base64_decode($file_info['binary_data']));

当我下载图像时,我看不到图像......

使用echo in:

echo base64_decode($file_info['binary_data']);

发生这种情况:

http://imageshack.us/f/18/encodez.jpg/

之后,我尝试在base64_decode中使用函数stream_get_contents,但是没有用。

有人知道如何用php下载我的图像吗?

非常感谢...

1 个答案:

答案 0 :(得分:0)

显然你的自定义getBinary_Data()将$ file_info ['binary_data']作为资源返回,而不是字符串..所以要么改变函数要么使用base64_decode(file_get_contents($file_info['binary_data'])));

然后尝试使用fclose($file_info['binary_data']);

P.S。 postgre中的二进制数据是不是有blob类型?