我正在尝试从以base 64编码的postgresql下载文件。该文件的内容在数据库bytea
中似乎不错,但是当我使用PHP下载该文件时却不一样:
我正在将PHP 5.6与symfony 2.8一起使用。我尝试在base 64中解码,但没有成功。
$name = $file->getName();
$content = base64_decode(stream_get_contents($file->getContent()));
$contentType = $file->getContentType();
$response = new Response();
$response->headers->set("Cache-Control", "no-cache private");
$response->headers->set("Content-Description", "File Transfer");
$response->headers->set('Content-Type', $contentType);
$response->headers->set('Content-Disposition', 'attachment; filename="' . $name . '"');
$response->headers->set("Content-Transfer-Encoding", "binary");
$response->headers->set('Content-Length: ', strlen($content));
$response->sendHeaders();
$response->setContent($content);
return $response;
在此示例中,我使用notepad ++创建了一个包含字符串“ test
”的文件。在数据库中,它显示为“ dGVzdA==
”。
当我下载文件并对其进行解码时,其内容为“ Ǯ8kθطw
”,应为“ test
”。
答案 0 :(得分:0)
PGSQL正在将我的文件转换为十六进制值。 它需要被解码。 此外,PQGSQL响应的开头有一个“ /”。需要将其删除。
这是我对内容的处理方式
$content = base64_decode(hex2bin(
substr(
stream_get_contents(
$file->getContent()
)
,1)
));