图片上传几种方式总结
1.html表單上傳(不推薦)
最傳統(tǒng)的圖片上傳方式是form表單上傳,使用form表單的input[type=”file”]控件,打開系統(tǒng)的文件選擇對(duì)話框,從而達(dá)到選擇文件并上傳的目的。
form表單上傳。表單上傳需要注意以下幾點(diǎn):
1、.提供form表單,method必須是post。
2、form表單的enctype必須是multipart/form-data。
enctype 屬性規(guī)定在發(fā)送到服務(wù)器之前應(yīng)該如何對(duì)表單數(shù)據(jù)進(jìn)行編碼。默認(rèn)地,表單數(shù)據(jù)會(huì)編碼為 "application/x-www-form-urlencoded"。就是說,在發(fā)送到服務(wù)器之前,所有字符都會(huì)進(jìn)行編碼。HTML表單如何打包數(shù)據(jù)文件是由enctype這個(gè)屬性決定的。
enctype有以下幾種取值:
aplication/x-www-form-urlencoded:在發(fā)送前編碼所有字符(默認(rèn))(空格被編碼為’+’,特殊字符被編碼為ASCII十六進(jìn)制字符)。 multipart/form-data:不對(duì)字符編碼。在使用包含文件上傳控件的表單時(shí),必須使用該值。 text/plain:空格轉(zhuǎn)換為 “+” 加號(hào),但不對(duì)特殊字符編碼。 默認(rèn)enctype=application/x-www-form-urlencoded,所以表單的內(nèi)容會(huì)按URL規(guī)則編碼,?
2.Ajax無刷新上傳(jquery---ajax上傳)
ajax和FormData可實(shí)現(xiàn)頁面無刷新的文件上傳效果,主要用到了jQuery的ajax()方法和XMLHttpRequest Level 2的FormData接口。通過FormData對(duì)象可以更靈活方便的發(fā)送表單數(shù)據(jù),因?yàn)榭梢元?dú)立于表單使用。如果你把表單的編碼類型設(shè)置為multipart/form-data ,則通過FormData傳輸?shù)臄?shù)據(jù)格式和表單通過submit()方法傳輸?shù)臄?shù)據(jù)格式相同。
Ajax無刷新上傳的方式,本質(zhì)上與表單上傳無異,只是把表單里的內(nèi)容提出來采用ajax提交,并且由前端決定請(qǐng)求結(jié)果回傳后的展示結(jié)果。
<form><input id="file" name="file" type="file" /><input id="token" name="token" type="hidden" /> </form> $("#file").on("change", function(){var formData = new FormData();formData.append("file", $("#file")[0].files);formData.append("token", $("#token").val());$.ajax({url: "http://uploadUrl",type: "POST",data: formData,processData: false,contentType: false,success: function(response){// 根據(jù)返回結(jié)果指定界面操作}}); });我們使用了file控件的change來觸發(fā)上傳事件,當(dāng)然你也可以使用某個(gè)按鈕來觸發(fā)表單提交。提交數(shù)據(jù)時(shí),用到了FormData對(duì)象來發(fā)送二進(jìn)制文件,FormData構(gòu)造函數(shù)提供的append()方法,除了直接添加二進(jìn)制文件還可以附帶一些其它的參數(shù), 作為XMLHttpRequest實(shí)例的參數(shù)提交給服務(wù)端。
使用jQuery提供的ajax方法來發(fā)送二進(jìn)制文件,還需要附加兩個(gè)參數(shù):
processData: false // 不要對(duì)data參數(shù)進(jìn)行序列化處理,默認(rèn)為true
contentType: false // 不要設(shè)置Content-Type請(qǐng)求頭,因?yàn)槲募?shù)據(jù)是以 multipart/form-data 來編碼
3.web文件上傳插件??Web Uploader?----?支持多圖上傳,大文件上傳,壓縮圖片上傳,預(yù)覽等
官網(wǎng) :?http://fex.baidu.com/webuploader/
?
?
各類插件上傳
當(dāng)上傳的需求要求可預(yù)覽、顯示上傳進(jìn)度、中斷上傳過程、大文件分片上傳等等,這時(shí)傳統(tǒng)的表單上傳很難實(shí)現(xiàn)這些功能,我們可以借助現(xiàn)有插件完成。
如百度上傳插件Web Uploader、jQuery圖片預(yù)覽插件imgPreview 、拖拽上傳與圖像預(yù)覽插件Dropzone.js等等,大家可根據(jù)項(xiàng)目實(shí)際需求選擇適合的插件。
總結(jié)
以上是生活随笔為你收集整理的图片上传几种方式总结的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: MATLAB启动慢解决措施
- 下一篇: MFC中ShowWindow函数