首页 > 解决方案 > 如何通过 jquery 将“multipart/form-data”(图片、pdf 等)保存到 mysql 数据库 mediumblob?

问题描述

我正在构建一个评估工具。逻辑是:

  1. 在每个问题中,一旦我单击“上传/查看文件”,它将弹出一个模式;

  2. 在模态中,有一个部分您可以选择图片/文档/视频进行上传。代码为: Html代码

  3. 单击提交后,它将触发 jquery,如下所示:

    $(文档).ready(函数(){   
        $('#upload_file_attachment').submit(function(event){
            event.preventDefault();
            var formData = new FormData($(this)[0]);
            $.ajax({
                url: "ajax/upload-attachment.ajax.php",
                类型:“发布”,
                数据:表格数据,
                异步:假,
                缓存:假,
                内容类型:假,
                处理数据:假,
                “成功”:函数(数据){
                                $('#upload_success_msg').fadeIn().html(data);
                                设置超时(函数(){
                                    $('#upload_success_msg').fadeOut("Slow");
                                },5000);
                            }
            }); //ajax结束
    
    
    
    })//End of submit
    
    })
  4. 以下是ajax php代码:

    需要一次'../php-includes/connect.inc.php';
    全局$db;
    $assess_id=$_POST['assess_id'];
    $quest_ref=$_POST['quest_ref'];
    $email=$_POST['email'];
    $type=$_POST['type'];
    
    if($type=="文件"){
        $file=$_FILES["文件"];
        $fileName=$file["name"][0];
        如果(空($文件名)){
            echo "未选择文件";
            返回;
        }
        $fileType=$file["type"][0];
        $fileData=$file["tmp_name"][0];
    
    
    mysqli_query($db, "INSERT INTO `files` VALUES('$assess_id','$quest_ref','$fileName','$fileType','$fileData', NOW(), '$email', '')");
    echo "Success";
    
    }
  5. 但是,当我在上传文件后检查数据库时,它只会将“C:xampp mpphpFE6F.tmp”之类的名称上传到 blob 中,显然 $fileData 不正确。你能帮我怎么做吗?

谢谢

标签: phpjqueryajax

解决方案


另一种方法是将图像保存到服务器或cloudinary之类的东西,并将创建的链接保存到 SQL。


推荐阅读