上傳圖片我首先想到的是利用這個插件乌企,webupload LUploade這類插件大多支持圖片預(yù)覽埠通,斷點(diǎn)/分片上傳,功能比較豐富逛犹,但是由于后臺原因我需要利用form表單進(jìn)行上傳圖片端辱,所以就整理了一下關(guān)于圖片上傳的幾種方式:
1.form表單上傳圖片
表單上傳遇到了一下幾個問題:
(1)進(jìn)行表單提交時梁剔,無法獲取返回值
(2)表單提交會進(jìn)行頁面刷新
為了解決這個問題,我想到了利用iframe進(jìn)行解決舞蔽,在form元素上直接添加target屬性荣病,使提交跳轉(zhuǎn)頁面直接跳轉(zhuǎn)到iframe中,阻止頁面進(jìn)行跳轉(zhuǎn)渗柿,返回結(jié)果也會呈現(xiàn)在 iframe框架之中个盆,我們可以去除iframe中的返回值,前提是必須在同一個域名下朵栖。這樣我們獲取返回值就會擁有局限性颊亮。還好我反降了另外一種方法,jquery中jqueryj.form.js表單提交插件陨溅。我們可以直接這樣來獲取表單返回值终惑。
form表單提交注意事項:
(1).提供form表單,method必須是post门扇。
(2).form表單的enctype必須是multipart/form-data雹有。
javascript學(xué)習(xí)交流群:4538335s's's's'sssssssssssssss54
enctype 屬性規(guī)定在發(fā)送到服務(wù)器之前應(yīng)該如何對表單數(shù)據(jù)進(jìn)行編碼。默認(rèn)地臼寄,表單數(shù)據(jù)會編碼為 "application/x-www-form-urlencoded"霸奕。就是說,在發(fā)送到服務(wù)器之前吉拳,所有字符都會進(jìn)行編碼质帅。HTML表單如何打包數(shù)據(jù)文件是由enctype這個屬性決定的。enctype有以下幾種取值:
application/x-www-form-urlencoded:在發(fā)送前編碼所有字符(默認(rèn))(空格被編碼為’+’留攒,特殊字符被編碼為ASCII十六進(jìn)制字符)临梗。
multipart/form-data:不對字符編碼。在使用包含文件上傳控件的表單時稼跳,必須使用該值盟庞。
text/plain:空格轉(zhuǎn)換為 “+” 加號,但不對特殊字符編碼汤善。
默認(rèn)enctype=application/x-www-form-urlencoded什猖,所以表單的內(nèi)容會按URL規(guī)則編碼,然后根據(jù)表單的提交方法:
method=’get’ 編碼后的表單內(nèi)容附加在請求連接后红淡,
method=’post’ 編碼后的表單內(nèi)容作為post請求的正文內(nèi)容不狮。
(3).提供input type="file"上傳輸入域。
2.ajax無刷新上傳?
ajax和FormData可實現(xiàn)頁面無刷新的文件上傳效果在旱,主要用到了jQuery的ajax()方法和XMLHttpRequest Level 2的
FormData接口摇零。通過FormData對象可以更靈活方便的發(fā)送表單數(shù)據(jù),因為可以獨(dú)立于表單使用桶蝎。如果你把表單的編碼類型設(shè)置為multipart/form-data 驻仅,則通過FormData傳輸?shù)臄?shù)據(jù)格式和表單通過submit()方法傳輸?shù)臄?shù)據(jù)格式相同谅畅。
ajax無刷新上傳
Ajax無刷新上傳的方式,本質(zhì)上與表單上傳無異噪服,只是把表單里的內(nèi)容提出來采用ajax提交毡泻,并且由前端決定請求結(jié)果回傳后的展示結(jié)果。
3.各類插件的使用:
webupload LUPloader