post multipart/form-data 类型表单如何获取File外其他参数
參考資料:
post multipart/form-data 類型表單如何獲取File外 其他參數:https://www.douban.com/note/536231506/
multipart/form-data post 方法提交表單,后臺獲取不到數據:http://www.cnblogs.com/bdqczhl/p/5971404.html
要在Filter中解析原生的request,網上找的都不靠譜,我的應用中在controller層通過Spring完美解析,所以想到了直接使用Spring的原生支持來解決這個問題,終于找到了CommonsMultipartResolver 這個通常只在xml中使用的類。
代碼如下,得到multipartRequest 對象后,就可以直接用getParameter(“name”)的方式獲取了!
追加:今天發現這樣做還有一個問題就是當調用commonsMultipartResolver.resolveMultipart(httpRequest); 方法時,原request會消亡!所以寫filter的時候注意不要在用chain調用老的request!
Q:multipart/form-data post 方法提交表單,后臺獲取不到數據
A:這個和servlet容器有關系,比如tomcat等。
get方式
get方式提交的話,表單項都保存在http header中,格式是
http://localhost:8080/hello.do?name1=value1&name2=value2這樣的字符串。server端通過request.getParameter是可以取到值的。
post方式(enctype為缺省的application/x-www-form-urlencoded)表單數據都保存在http的正文部分,格式類似于下面這樣:用request.getParameter是可以取到數據的 name1=value1&name2=value2
post方式(enctype為multipart/form-data,多用于文件上傳)
表單數據都保存在http的正文部分,各個表單項之間用boundary隔開。格式類似于下面這樣:用request.getParameter是取不到數據的,這時需要通過request.getInputStream來取數據,不過取到的是個InputStream,所以無法直接獲取指定的表單項(需要自己對取到的流進行解析,才能得到表單項以及上傳的文件內容等信息)。這種需求屬于比較共通的功能,所以有很多開源的組件可以直接利用。比如:apache的fileupload組件,smartupload等。通過這些開源的upload組件提供的API,就可以直接從request中取得指定的表單項了。
總結
以上是生活随笔為你收集整理的post multipart/form-data 类型表单如何获取File外其他参数的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: jQuery-个人学习记录(2)
- 下一篇: 前端知识区别和学习路线_个人收藏