我正在使用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下载我的图像吗?
非常感谢...
答案 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类型?