我在将图像上传到mysql数据库之前使用了以下代码
在编码之前我已经完成了
$content = addslashes($content);
$content = base64_encode($content);
然后我在数据库中测试了图像后输入正常。
但是,每当我尝试下载相同的图像时,它保存在文件系统上,但绝不让我查看它。因为,它给我不正确的图像文件。为什么会如此
$file_data= $this->get_attachment($id);
$content = $file_data['content'];
$content = stripslashes($content);
$content = base64_decode();
header("Content-length: ". strlen($content));
header("Content-type: ".$file_data['filetype']);
header("Content-Disposition: attachment; filename=".$file_data['filename']);
echo $content;
紧急帮助将受到高度赞赏。
答案 0 :(得分:1)
您正在发送base64编码字符串的文件长度$file_data['content']
而是发送解码后的$content
的长度。
$content = base64_decode($file_data['content']);
// Send the Content-length of the decoded data $content
// Should work, since strlen() is binary safe
header("Content-length: ". strlen($content));
答案 1 :(得分:0)
为什么会这样[?]
您已将一些数据存储到数据库中。在检索时,您没有获得原始数据。这就是原因。
造成这种情况的原因是什么?可能有很多事情导致这种情况。根据您在问题中列出的信息,我只能猜测:
请仔细检查代码的编码/解码部分(测试它!)并确保database column has a fitting typeDocs也可以存储您的数据。将原始内容的长度与从数据库中检索的长度进行比较。此外,您可以为数据添加校验和(例如md5
)以测试其是否已更改。