日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 综合教程 >内容正文

综合教程

FormData的使用

發(fā)布時間:2023/12/15 综合教程 20 生活家
生活随笔 收集整理的這篇文章主要介紹了 FormData的使用 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
 var formData = new FormData();
<form id="coords" class="coords" onsubmit="return false;" action="">
     <!-- 主要的控件-->       <input id="file" type="file" >

<div class="inline-labels"> <label>X1 <input type="text" size="4" id="x1" name="x1" /></label> <label>Y1 <input type="text" size="4" id="y1" name="y1" /> </label> <label>X2 <input type="text" size="4" id="x2" name="x2" /></label> <label>Y2 <input type="text" size="4" id="y2" name="y2" /></label> <label>W <input type="text" size="4" id="w" name="w" /> </label> <label>H <input type="text" size="4" id="h" name="h" /></label> </div> </form>
<button id="btn">上傳頭像</button>

主要是通過formData封裝我們要傳遞的參數(shù),然后使用ajax傳遞到后端。

這里有兩中方式

1.直接找到表單放到FormData中

$("#btn").click(function(){
  var form = document.getElementById("coords");//獲取到form表單$("coords")[0] 這樣也可以    var formData = new FormData(form);//創(chuàng)建一個formData對象,將表單中的數(shù)據(jù)放進去,有一個問題,就是普通參數(shù)可以放進去,在后端也可以拿到,文件也可以拿到,昨天測試了
    
        $.ajax({//ajax
                    url: "/upload/uploadHeaderPic",//文件上傳路徑
                    type: "POST",
                    processData : false,//不處理數(shù)據(jù),必須為false
                    contentType : false,//不設(shè)置內(nèi)容類型,必須為false
                    data: formData,//這個就是我們封裝的參數(shù)的一個formData
                    dataType:"json",
                    success: function(data){
                            //layer.msg(data.msg)
                            alert(data.msg);
                           console.log("msg",data.msg)
                    },
                    error:function(e){
                            console.log("msg","ajax調(diào)用出現(xiàn)錯誤")
                    }
        });
 }

2.初始化后,一個一個添加到FormData中

 $("#btn").click(function(){
        //這里是只創(chuàng)建對象,不把整個表單放進去,而是一個一個的放進去
            var formData = new FormData();//創(chuàng)建一個formData對象

        var x1 = $('#x1').val(),
        x2 = $('#x2').val(),
        y1 = $('#y1').val(),
        y2 = $('#y2').val();
        formData.append('x11',x1 );
        formData.append('y11',y1 );
        formData.append('x22',x2 );
        formData.append('y22',y2 );

     $.ajax({//ajax
                    url: "/upload/uploadHeaderPic",
                    type: "POST",
                    processData : false,//不處理數(shù)據(jù),必須為false
                    contentType : false,//不設(shè)置內(nèi)容類型,必須為false
                    data: formData,
                    dataType:"json",
                    success: function(data){
                            //layer.msg(data.msg)
                            alert(data.msg);
                           console.log("msg",data.msg)
                    },
                    error:function(e){
                            console.log("msg","ajax調(diào)用出現(xiàn)錯誤")
                    }
                    
                });
})

上邊都是普通文本參數(shù)的傳遞。下邊說下圖片的傳遞。

formData.append('img0', $('#file')[0].files[0]);

圖片的傳遞也是拿到圖片的值,然后設(shè)置參數(shù)傳遞。
但是需要注意的一點就是如何拿到圖片的值。

$('#file')[0].files[0] //這個取值就可以拿到
 <input id="file" type="file" > 的值[只可以拿到第一個圖片]。
$('#file')[0].files  //拿到多文件。
這里設(shè)置值的時候如果寫成這樣
formData.append('img0', $('#file')[0].files);我是用的是jfinal測試的,所以,這里是拿不到值的。具體原因未知。

如果多個值可以循環(huán)遍歷

for(var i=0; i<$('#file')[0].files.length;i++){//使用for循環(huán)將選擇的文件一個一個添加(append)到formData對象中
  formData.append('img0', $('#file')[0].files[i]);//注意:如果你使用的是jfinal框架這里的key(img)必須是不同的,如果相同的話文件能上傳但是拿上傳文件名的時候只能拿到一個
}

這種循環(huán)遍歷的方式也是可以拿到值的。

后臺取值的時候jfinal的方式getFiles("head"); “head”這個可以不寫,這個是一個設(shè)置上傳路徑。getFiles()就可以拿到全部的值。

普通取值的話,直接getPara("xx");就可以

圖片的傳遞方式和上邊的普通傳遞參數(shù)方式一樣都是使用一樣的ajax方式

✨文件添加事件獲取文件✨

$("#fileId").on('change', function (e) {  //文件控件的改變監(jiān)聽事件
  var fileList = e.currentTarget.files; //獲取所有的文件
  $.each(fileList, function (index, item) {
      var name = item.name;//名稱
var sizeKb = (item.size /1024).toFixed(2)//文件大小默認b,除以1024就是kb, toFixed(2)保留兩位小數(shù)
  })
})

總結(jié)

以上是生活随笔為你收集整理的FormData的使用的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。