对于我的一个应用程序,我需要将图像文件保存在数据库表中。我正在使用AJAX发送多部分表单数据,并可以在操作页面上查看图像文件详细信息。
在操作页面上,base64编码正在运行并显示正确的编码数据。另外,我看到编码数据通过回显SQL语句显示在UPDATE SQL查询上。
但是在尝试执行SQL查询语句时,每次只插入data:image/;base64,
并忽略base64编码的完整数据。
当我在不使用AJAX的情况下提交表单时,系统会使用base64编码数据更新数据库表。
示例代码: JavaScript的:
$(document).on("change", "#bird", function() {
var file_data = $("#bird").prop("files")[0];
var form_data = new FormData();
form_data.append("file", file_data)
$.ajax({
type: 'post',
contentType: false,
processData: false,
data: image_data,
url: "/update-bird.php",
dataType: 'json',
cache:false,
success: function(data) {
// Ajax
}
});
});
PHP:
if(isset($_FILES))
{
$path = $_FILES['file']['name'];
$type = pathinfo($path, PATHINFO_EXTENSION);
$data = file_get_contents($_FILES['file']['tmp_name']);
$birdpic = "data:image/".pathinfo($path, PATHINFO_EXTENSION).";base64,".base64_encode(file_get_contents($_FILES['file']['tmp_name']));
$updateQ = "UPDATE birds SET picture='$birdpic' WHERE name='Yoy'";
if($dbo->query($updateQ))
echo 1;
else
echo 0;
}
我希望,能得到一些建议来解决这个问题。提前谢谢!
答案 0 :(得分:0)
试一下 - 表格列必须为BLOB
或LONGBLOB
$img_data = file_get_contents($img_path);
$type = pathinfo($img_path, PATHINFO_EXTENSION);
$birdpic = base64_encode($img_data);
$updateQ = "UPDATE birds SET picture='$birdpic' WHERE name='Yoy'";
答案 1 :(得分:0)
AJAX不会携带图像文件,尝试使用Jquery或提交表单。 使用enctype =“multipart / form-data”的表单,我不确定Jquery是否可行。