php – Base64编码上传的文件,然后保存在数据库中

我想基于64个编码上传文件,然后将其保存到 MySQL数据库中的表的Blob类型列中.

我已经尝试内置PHP函数base64_encode与文件变量,但这似乎不起作用.

有办法可以做到吗?

原因是我不想使用moveuploaded文件一个文件夹.

谢谢.

由于@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);

相关文章

统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返...
统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返...
前言 之前做了微信登录,所以总结一下微信授权登录并获取用户...
FastAdmin是我第一个接触的后台管理系统框架。FastAdmin是一...
之前公司需要一个内部的通讯软件,就叫我做一个。通讯软件嘛...
统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返...