使用base64编码数据更新SQL查询

时间:2016-08-26 06:34:24

标签: javascript php mysql json ajax

对于我的一个应用程序,我需要将图像文件保存在数据库表中。我正在使用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;
 }

我希望,能得到一些建议来解决这个问题。提前谢谢!

2 个答案:

答案 0 :(得分:0)

试一下 - 表格列必须为BLOBLONGBLOB

$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是否可行。