如何将输入图像保存在带有 longblob 列的数据库中?

我有一个文件类型输入。我希望将插入到输入中的照片发送到数据库并保存。我写了一些根据逻辑应该可以工作的代码。但我不知道为什么它不起作用。我错在哪里?列照片是 longblob 类型


html

     <label for="">img</label>

     <input type="file"  id="immagine" >

javascript

     function values(a){

      if (a.length>1){

       var img;

       const fr = new FileReader();

       fr.onload = () => {

        // It worked

         img = fr.result;


           var params= "V1="+a[2]+"& V2="+a[3]+"& V3="+a[4]+"& V4="+a[5]+"& V5="+a[6]+"& V6="+a[7]+"& V7="+a[8]+"& V8="+a[9]+"& V9="+a[10]+"& V10="+a[11]+"& V11="+a[12]+"& V12="+a[13]+"& V13="+a[14]+"& V14="+a[15]+"& img="+img;


           var xhttp = new XMLHttpRequest();

           xhttp.onreadystatechange = function() {

            if (this.readyState == 4 && this.status == 200) {


            }

           };

           xhttp.open("POST", "./server/AggiuntaBhk.php", true);

           xhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");

            xhttp.send( params);


        // ...use the array here...


           };

           fr.onerror = () => {

              // The read failed, handle/report it

                document.getElementById("a").innerHTML= "noo";

                                    };

          fr.readAsBinaryString(document.getElementById('immagine').files[0]);

}

}


php

     include("../../connessione_db/db_con.php"); // Include il file di connessione al database

     session_start();


     $v1=$_REQUEST["V1"];

     $v2=$_REQUEST["V2"];

     $v3=$_REQUEST["V3"]; 

     $v4=$_REQUEST["V4"];

     $v5=$_REQUEST["V5"];

     $v6=$_REQUEST["V6"];

     $v7=$_REQUEST["V7"];


     $queryI = mysqli_query($connessione_al_server,$queryInput);

查询后显示

              <?php

                echo '<img id="imgcaricata" class="mySlides" 

                 src="data:image/jpeg;base64,'.base64_encode( $foto["Foto"] 

                   ).'"

                 style="height:auto; width:auto;max-width:500px; margin-top:55px;" />';

                 ?>

我也尝试过until8Array,FileReader.readAsArrayBuffer()在数据库中我有正确的文件,但没有显示任何内容。如果我使用浏览选项直接在数据库中插入图像,我只能看到图像。存储或展示我错了吗?


撒科打诨
浏览 185回答 1
1回答

qq_笑_17

首先通过 JavaScript 读取文件:var oFReader = new FileReader();oFReader.readAsDataURL(document.getElementById("immagine").files[0]);oFReader.onload = function (oFREvent) {&nbsp; &nbsp; imgdata = oFREvent.target.result;};添加imgdata在params:var params = "img=" + encodeURIComponent(imgdata);发送到服务器:xhttp.send(params);查询后显示:<?phpecho '<img id="imgcaricata" class="mySlides" src="'.$foto["Foto"].'" style="height:auto; width:auto;max-width:500px; margin-top:55px;"/>';?>
打开App,查看更多内容
随时随地看视频慕课网APP