由于@Sjoerd和@zerkms正确地指出,您不需要这样做 – 一个blob列用于存储原始二进制数据,因此您可以绕过Base64进程并插入文件的原始数据.
如果要将图像存储在数据库中(顺便说一句,我个人不喜欢这样做),最好存储原始数据 – Base64编码数据使其更大,意味着必须在渲染图像,这增加了处理开销.
这是你可以插入原始二进制数据(假设MySQL扩展名):
$data = file_get_contents($_FILES['name_of_control']['tmp_name']);
$data = mysql_real_escape_string($data);
$query = "
INSERT INTO table
(`blob_column`)
VALUES
('$data')
";
mysql_query($query);
如果你真的想要Base64编码(在这种情况下,它可以存储在varchar中),只需添加一个base64_encode()调用:
$data = file_get_contents($_FILES['name_of_control']['tmp_name']);
$data = base64_encode($data);
// There is an argument that this is unnecessary with base64 encoded data, but
// better safe than sorry :)
$data = mysql_real_escape_string($data);
$query = "
INSERT INTO table
(`varchar_column`)
VALUES
('$data')
";
mysql_query($query);
这篇博客讨论了在数据库中存储图像时,直接使用blob列存储原始二进制数据与Base64编码数据的优缺点。作者建议,为了减少处理开销和存储空间,应首选存储原始二进制数据。文中提供了PHP代码示例,展示了如何将文件直接插入数据库的blob列或进行Base64编码后再存储。


被折叠的 条评论
为什么被折叠?



