我希望能把上传的文件进行 base64 编码,然后保存到 MySQL 数据库表的 Blob 类型列中。
我已经尝试使用 PHP 内置函数 base64_encode 加上文件变量,但似乎并不起作用。
有什么方法可以做到这一点吗?
原因在于,我不想将上传的文件移动到一个文件夹中。
谢谢。
我希望能把上传的文件进行 base64 编码,然后保存到 MySQL 数据库表的 Blob 类型列中。
我已经尝试使用 PHP 内置函数 base64_encode 加上文件变量,但似乎并不起作用。
有什么方法可以做到这一点吗?
原因在于,我不想将上传的文件移动到一个文件夹中。
谢谢。
正如@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);