Php 将图像保存到数据库中
我正在尝试将图像保存到mysql数据库中。它将二进制代码保存到表中,但它已损坏,我无法显示它。数据库字段的大小也比原始文件大。我的代码或我的方法有什么错误吗 我知道在数据库中存储图像不是一个好的做法,但我不能决定Php 将图像保存到数据库中,php,mysql,blob,Php,Mysql,Blob,我正在尝试将图像保存到mysql数据库中。它将二进制代码保存到表中,但它已损坏,我无法显示它。数据库字段的大小也比原始文件大。我的代码或我的方法有什么错误吗 我知道在数据库中存储图像不是一个好的做法,但我不能决定 <div class="box-body"> <h3>Bilder</h3> <form id="image_form"> <input
<div class="box-body">
<h3>Bilder</h3>
<form id="image_form">
<input type="file" name="frame" id="file_name" />
<input type="submit" value="Save">
</form>
</div>
$('#image_form').on("submit",(function (e) {
e.preventDefault();
$.ajax({
type: 'POST',
url: './index.php?action=585',
data: new FormData(this),
contentType: false,
cache: false,
processData: false,
beforeSend: function (a) {
//a.overrideMimeType('image/jpeg; charset=UTF-8');
},
success: function (data) {
console.log(data);
},
error: function () {
location.reload();
}
});
}));
数据库
public static function updateResImages($img1, $img2, $img3, $customerid){
$db = new MySQLDatabase();
$sql = "UPDATE customer SET online_res_bild1 = ?, online_res_bild2 = ?, online_res_bild3 = ? WHERE customer_id = ? ";
$rs = $db->executeQuery($sql, 'sssi', $img1, $img2, $img3, $customerid);
$db->close();
return 1;
}
这并不完全是“坏习惯”;这真的很不受欢迎。另外,对于100k以上的文件,性能往往会下降。好吧,我的上级坚持这样做,我对blob
addslashes($data)
是否会更改文件不是很有经验???转换为损坏的格式。而是将文件转换为base64编码。当你从数据库读回数据时,别忘了把它转换回来在数据库中存储图像的问题之一是图像文件可能包含导致字符串终止的各种字节,特别是空字节,它表示C代码中的字符串结束变量,哪个PHP被写入add to@riggsfully另一个问题是base 64使文件增大了33%。另外,将数据库中的图像添加到网页中要比使用文件系统路径困难得多,除非您可以使用数据url协议,该协议允许将base64直接包含到网页中
public static function updateResImages($img1, $img2, $img3, $customerid){
$db = new MySQLDatabase();
$sql = "UPDATE customer SET online_res_bild1 = ?, online_res_bild2 = ?, online_res_bild3 = ? WHERE customer_id = ? ";
$rs = $db->executeQuery($sql, 'sssi', $img1, $img2, $img3, $customerid);
$db->close();
return 1;
}