form上传文件以及跨域异步上传
要設(shè)置了enctype屬性才能上傳,需要使用上傳的jar包,這里使用的是cos-26Dec2008.jar,
?
?
?
關(guān)于跨域上傳文件:
跨域上傳文件總會(huì)報(bào)錯(cuò),即使服務(wù)器端設(shè)置了header('Access-Control-Allow-Origin:?*'),仍會(huì)報(bào)錯(cuò)說缺少multipart屬性,發(fā)現(xiàn)用form提交就沒問題。原因是,
HTML5上傳的時(shí)候就是用的CORS規(guī)范,即:在發(fā)送真正的上傳請(qǐng)求之前會(huì)先發(fā)送一條OPTIONS請(qǐng)求給服務(wù)器,這時(shí)候需要服務(wù)器響應(yīng)允許跨域上傳的HTTP頭,然后中斷輸出。瀏覽器接到允許跨域上傳的HTTP頭后會(huì)再次發(fā)起真正的上傳文件請(qǐng)求(POST)。詳細(xì)分析參考http://www.cnblogs.com/woshimrf/p/js-cors.html
因此,上傳文件需要應(yīng)答的,第一次options請(qǐng)求需要返回允許跨域的信息,而我通常第一次就當(dāng)做文件接收了,所以接收不到。
做法:對(duì)請(qǐng)求進(jìn)行攔截,如果是options請(qǐng)求直接返回
response.setHeader("Access-Control-Allow-Origin", "*"); response.setHeader("Access-Control-Allow-Methods", "POST, PUT, OPTIONS");如果是別的請(qǐng)求則通過。
1 String method = request.getMethod(); 2 if ("OPTIONS".equals(method)) { 3 return; 4 } 5 nextHandler.handle(target, request, response, isHandled); 本文轉(zhuǎn)自Ryan.Miao博客園博客,原文鏈接:http://www.cnblogs.com/woshimrf/p/file-cors.html,如需轉(zhuǎn)載請(qǐng)自行聯(lián)系原作者總結(jié)
以上是生活随笔為你收集整理的form上传文件以及跨域异步上传的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: VBS脚本常用经典代码收集
- 下一篇: cisco 6509交换配置