【发布时间】:2016-09-19 05:01:57
【问题描述】:
我将文件保存为php 中的long blob,首先将其保存在文件夹中,然后保存到数据库中,问题是服务器具有写入权限,所以我想直接保存它
这是我尝试过的(效果很好):
if(isset($_POST['image'])){
$id = 0;
$image = $_POST['image'];
$tmp_image = date('YmdHisu').'.jpg';
file_put_contents($tmp_image, base64_decode($image));
$sql = "INSERT INTO fingerprint(template)
VALUES ('".addslashes(file_get_contents($tmp_image))."')";
try
{
$connection=Yii::app()->db;
$command=$connection->createCommand($sql);
$rowCount=$command->execute(); // execute the non-query SQL
echo "saved successifully";
unlink($tmp_image);
}
catch(Exception $ex)
{
echo 'Query failed' , $ex->getMessage();
unlink($tmp_image);
}
}
如何将其保存在 mysql 中的 blob field 中,而无需先将其保存在文件夹中,然后再保存到 db 中
【问题讨论】:
-
如果
$_POST['image']确实包含文件的内容(我怀疑),那么只需addslashes($_POST['image']) -
$_POST['image'] 包含以 base 64 格式编码的文件字符串,这就是为什么要在上面对其进行解码。以上工作完美
-
你用的是什么版本的yii?
-
我使用的是 yii 版本 1
-
你应该用 yii 标准的方式上传它:创建一个模型来上传你的文件。