圖片上傳HTML部分只需要增加一個表單或在原有的表單中添加<input type="file">的標簽,表單示例如下:
1 <form id="imageForm" enctype="multipart/form-data" action="url" method="POST"> 2 <input type="text" name="imgName" /> 3 <input type="file" name="image" accept=""/> 4 <button type="submit" >上傳</button> 5 </form>
其中,form和input[type="file"]的屬性是圖片或者文件上傳的關鍵屬性;
對於要上傳圖片或文件的表單form,其必要屬性為enctype="multipart/form-data",這一屬性主要作用是將form的MIME編碼設置成二進制,為圖片或文件上傳提供編碼基礎。
注:表單form的默認MIME編碼為application/x-www-form-urlencoded。
接下來,是input[type="file"]的屬性設置。input[type="file"]是調用了HTML默認提供的本地文件選擇的控件。其中,accept屬性定義了空間打開時默認瀏覽的文件格式。accept的部分值(與圖片上傳相關的值)及其對應的文件格式如下表所示:
值 |
對應的文件
|
image/*
|
所有圖片文件
|
image/png
|
png格式的圖片
|
image/jpeg
|
jpg格式的圖片
|
image/gif
|
gif格式的圖片
|
image/png,image/jpeg,image/gif
|
png,jpg,gif格式的圖片 |
jquery.form.js的ajaxSubmit的使用方式跟ajax類似,不過ajaxSubmit不能直接調用,需要指定對象。
1 <script type="text/javascript" > 2 var ajax_option={ 3 url: url, //String, 表單提交的目標地址,此屬性會覆蓋表單的action屬性 4 type:type, //String,表單提交的方式(POST or GET),此屬性會覆蓋表單的method屬性 5 dataType: null, //String,指定接受服務端返回的數據類型(xml,script or json) 6 clearFomr: true, //boolean,默認為false,成功提交后是否清除所有表單元素的值 7 resetFomr: true, //boolean,默認為false,成功提交后是否重置所有表單元素的值 8 timeout: 3000, //number,單位ms,限制請求的時間,當請求大於設置的時間后,跳出請求 9 success:function(responseText,statusText,xhr,$form){ 10 console.log(responseText); 11 //業務提示 12 },//提交成功后的回調函數 。參數詳解:responseText,服務器返回的數據內容;statusText,服務器返回的狀態 13 beforSubmit: function(formData, jqForm, options){ 14 console.log(formData); 15 //業務提示 16 },//提交之前的回調函數。參數詳解:formData,數組對象,為表單的內容;jqForm,jQuery對象,封裝了表單的元素;options,之前設置的ajaxSubmit的option對象。 17 }; 18 19 //表單提交事件 20 $('#imageForm').submit(function(){ 21 $("#imageForm").ajaxSubmit(ajax_option); 22 return false; 23 }) 24 </script>
上述就是利用jquery.form.js插件實現的表單的提交。
將上述兩部分結合,就是利用HTML和JQUERY實現無刷新頁面的圖片上傳功能。