亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 網站 > WEB開發 > 正文

考慮瀏覽器兼容的文件上傳

2024-04-27 15:13:34
字體:
來源:轉載
供稿:網友

方法一:使用FormData(因IE8不支持FormData, IE10才支持,因此此方法不兼容IE10以下的IE瀏覽器) 也可參考文章 http://www.jianshu.com/p/46e6e03a0d53

html:

<input type="file" class="form-control" id="inputfile" title="多個文件請打包后再上傳" style="display:inline-block;width:100%;_overflow:hidden;" />

js:

//新增行的保存及上傳文件function uploadFile(data) { var fileObj = document.getElementById("inputfile").files; // js 獲取文件對象 var FileController = "/action/add"; // 接收上傳文件的后臺地址 var form = new FormData(); //20160301 添加其他參數 form.append("param1",param1); form.append("param2",param2); if (fileObj.length != 0) { var i = fileObj.length; for (var j = 0; j < i; j++) { form.append("file" + j, fileObj[j]); // 文件對象 } } form.append("data", data); // xmlHttPRequest 對象 xmlhttpRequest = new XMLHttpRequest(); xmlHttpRequest.onreadystatechange = callback; xmlHttpRequest.open("post", FileController, true); /* event listeners */ // 進度條 // xmlHttpRequest.upload.addEventListener("progress", progressFunction, false); // xmlHttpRequest.addEventListener("load", uploadComplete, false); // xmlHttpRequest.addEventListener("error", uploadFailed, false); // xmlHttpRequest.addEventListener("abort", uploadCanceled, false); /* end listeners */ xmlHttpRequest.send(form);}function callback() { // 接收響應數據 // 判斷對象狀態是否交互完成,如果為4則交互完成 if (xmlHttpRequest.readyState == 4) { // 判斷對象狀態是否交互成功,如果成功則為200 if (xmlHttpRequest.status == 200) { // 接收數據,得到服務器輸出的純文本數據 var response = xmlHttpRequest.responseText; //console.log(response); if(response == 1) { enabledButton(); alert("保存成功!"); } else { alert("保存失敗,請重新嘗試!"); } enableButton(); }else{//!=200 alert("保存失敗!"); enableButton(); } }}

方法二:使用form提交 兼容各種瀏覽器,form提交后會刷新頁面,且不太好獲取返回參數。如要返回原始頁面,需要用response.sendRedirect(原始頁面url)進行轉向。 html:

<form id="uploadFileForm" name="uploadFileForm" enctype="multjavascript:submitFile();"> 上傳文件 </button> </td> </tr> </table> </div> </form>

js:

//20160612 文件上傳按鈕 form表單提交function submitFile(){ var attach = document.getElementById("attach").value; alert("attach: " + attach); if(attach == undefined || attach == ""){ alert("請選擇文件"); return; } uploadFileForm.action = "/tools/uploadFileAction"; uploadFileForm.submit();}

方法三:使用jquery.form.js支持的Ajaxsubmit進行文件上傳 html:

<script th:src="@{/jquery/3.46.0/jquery.form.js}"></script><form id="uploadFileForm2" name="uploadFileForm2" enctype="multipart/form-data" method="post"> <div id="uploadFileTableDiv2" style="margin-left:10%;"> <table border="1" width="80%"> <tr> <td style="padding:10px;"> <span style="float:left;">上傳文件:&nbsp;&nbsp;</span> </td> <td style="padding:10px;"> <input type="file" id="attach2" name="attach2" size="25" style="height:30px;" /> </td> </tr> <tr> <td colspan="2" style="padding:10px;padding-left:50px;"> <button id="submit_btn2" type="button" class="btn btn-default" onclick="Javascript:ajaxSubmitFile();"> 上傳文件 </button> </td> </tr> </table> </div> </form>

js:

//在表單上追加input hidden元素 存放其他參數function appendInputElementForForm(formId,inputName,inputValue){ var myh = document.createElement("input"); myh.type = "hidden"; myh.value = inputValue; myh.id = inputName; myh.name = inputName; document.getElementById(formId).appendChild(myh); alert(document.getElementById(inputName).value); }//20170207 文件上傳ajax Form表單提交function ajaxSubmitFile(){ var attach = document.getElementById("attach2").value; alert("ajaxSubmitFile attach2: " + attach); if(attach == undefined || attach == ""){ alert("請選擇文件"); return; } appendInputElementForForm( "uploadFileForm2", "param1", "123"); appendInputElementForForm( "uploadFileForm2", "param2", "測試參數"); $('#uploadFileForm2').ajaxSubmit({ type:"post", url:"/tools/ajaxUploadFileAction", data:$('#uploadFileForm2').serialize(), dataType:"json", error:function(data){ alert(data); }, success:function(data){ alert("ajaxSubmit上傳成功"); alert("下載地址: " + data.data.attachment); } }); }

最后附帶上后臺的java代碼:

//20160612 文件上傳@RequestMapping(value = "ajaxUploadFileAction")public ModelAndView ajaxUploadFile(HttpServletRequest request, HttpServletResponse response) throws Exception{ ResponseInfo responseInfo = new ResponseInfo(); logger.info("ajaxUploadFile param1: " + request.getParameter("param1")); logger.info("ajaxUploadFile param2: " + request.getParameter("param2")); try { //將當前上下文初始化給CommonsMutipartResolver (多部分解析器) CommonsMultipartResolver multipartResolver=new CommonsMultipartResolver( request.getsession().getServletContext()); // 判斷是否是多數據段提交格式 if (multipartResolver.isMultipart(request)) { MultipartHttpServletRequest multiRequest = (MultipartHttpServletRequest)request; logger.info("ajaxUploadFile param1: " + multiRequest.getParameter("param1")); logger.info("ajaxUploadFile param2: " + multiRequest.getParameter("param2")); Iterator<String> iter = multiRequest.getFileNames(); logger.info("iter.hasNext(): "+iter.hasNext()); Integer fileCount = 0; while (iter.hasNext()) { MultipartFile multipartFile = multiRequest.getFile(iter.next()); String fileName = multipartFile.getOriginalFilename(); logger.info("upload demand filename: " + fileName ); //20170207 針對IE環境下filename是整個文件路徑的情況而做以下處理 Integer index = fileName.lastIndexOf("http://"); String newStr = ""; if(index>-1){ newStr = fileName.substring(index+1); }else{ newStr = fileName; } if(!newStr.equals("")){ fileName = newStr; } logger.info("new filename: " + fileName ); if (multipartFile != null) { HashMap<String,Object> result = DispatchInterfaceUtil.uploadFileByInputStream (multipartFile.getInputStream(),multipartFile.getSize(),fileName); Integer statusCode = (Integer)result.get("statusCode"); logger.info("statusCode: " + statusCode); if( statusCode.equals(0) ){ String attachment = (String)result.get("attachment"); responseInfo. setStatus(true); responseInfo.put("attachment", attachment); }else{ String errorMessage = (String)result.get("errorMessage"); logger.error( "errorMessage: " + errorMessage); responseInfo.setStatus(false); responseInfo.setMsg("文件上傳失敗"); } } fileCount++; }//while logger.info("fileCount: " + fileCount); } }catch (Exception e) { // TODO: handle exception responseInfo.setStatus(false); responseInfo.setMsg("后臺出現異常"); logger.warn("Error: ", e); } response.setContentType("text/html; charset=utf-8"); response.getWriter().write( JSON.toJSONString(responseInfo)); return null; }

**注意: IE10可以支持application/json格式的Response了,也就是說低于IE10版本一下的IE瀏覽器都需要使用text/html格式的Response。 在Response頭中指定Content-Type為text/html,是可以解決問題的。這樣返回給客戶端的是一個JSON字符串(并非JSON對象),無需IE來解析。**


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国产一区二区三区欧美| 色婷婷综合久久久久中文字幕1| 国产精品久久久久久久久久三级| 国产suv精品一区二区| 国产精品自拍视频| 亚洲精品一区av在线播放| 亚洲网站在线观看| 亚洲最大福利网站| 亚洲视频网站在线观看| 国模精品视频一区二区| 亚洲美女www午夜| 亚洲人成在线免费观看| 在线观看欧美日韩国产| 国产精品美女999| 国产98色在线| 成人高h视频在线| 欧美韩国理论所午夜片917电影| 亚洲电影免费观看高清完整版在线观看| 九九视频直播综合网| 亚洲第一区在线观看| 成人天堂噜噜噜| 精品一区二区三区四区在线| 国产成人黄色av| 91在线视频成人| 一级做a爰片久久毛片美女图片| 日韩av手机在线| 4k岛国日韩精品**专区| 欧美激情中文字幕在线| 国产精品久久久久久久7电影| 九色91av视频| 91免费版网站入口| 欧美国产激情18| 亚洲精品欧美日韩| 国产亚洲美女久久| 尤物九九久久国产精品的分类| 亚洲国产精品久久久久秋霞蜜臀| 国产精品激情自拍| 欧美精品一本久久男人的天堂| 69av在线视频| 久久久久久国产精品三级玉女聊斋| 欧美激情精品久久久久久免费印度| 国产精品日韩精品| 欧美精品少妇videofree| 91精品国产电影| 欧美激情一级二级| 在线电影av不卡网址| 亚洲精品在线观看www| 国产欧美日韩免费看aⅴ视频| 亚洲国产精彩中文乱码av| 亚洲欧美日韩综合| 国产成人av在线播放| 久久精品中文字幕免费mv| 欧美亚洲国产视频| 狠狠干狠狠久久| 中文字幕日韩有码| 亚洲成人久久一区| 亚洲精品小视频| 国产精品揄拍500视频| 亚洲精品久久久久久久久| 亚洲精品乱码久久久久久按摩观| 日韩av网站导航| 亚洲一区二区三区香蕉| 亚洲国产精品久久久久| 国产偷亚洲偷欧美偷精品| 亚洲欧美另类人妖| 另类色图亚洲色图| 亚洲电影免费观看高清完整版| 欧美在线免费视频| 日韩人在线观看| 色99之美女主播在线视频| 国产日本欧美一区二区三区| 亚洲国产97在线精品一区| 精品国产成人在线| 欧美国产亚洲精品久久久8v| 日本久久久久久久久久久| 国产亚洲欧美另类中文| 欧美激情中文网| 欧美极品xxxx| 日韩视频中文字幕| 色爱精品视频一区| 国产成人精品免高潮在线观看| 久久成人在线视频| 欧美大片免费观看在线观看网站推荐| 影音先锋欧美在线资源| 久久久久久久久久久av| 成人激情综合网| 亚洲精品有码在线| 久久久综合免费视频| 国产丝袜一区视频在线观看| 亚洲福利视频二区| 欧美性生交大片免网| 欧美日韩国产精品专区| 亚洲成人国产精品| 欧美大胆在线视频| 日韩欧美国产一区二区| 亚洲人成网站免费播放| 久久视频国产精品免费视频在线| 最近2019中文免费高清视频观看www99| 亚洲第五色综合网| 久久综合久久八八| 欧美激情xxxx| 日韩免费看的电影电视剧大全| 欧美在线视频一区| 26uuu另类亚洲欧美日本一| 国产在线拍偷自揄拍精品| 最近2019中文字幕第三页视频| 91精品国产成人www| 91视频免费网站| 久久久久久91| 91精品国产九九九久久久亚洲| 欧美劲爆第一页| 精品欧美激情精品一区| 欧美性猛交xxxx久久久| 日韩美女福利视频| 日韩精品在线电影| 欧美日韩在线视频首页| 国产精品视频26uuu| 亚洲美女久久久| 57pao精品| 亚洲免费高清视频| 日本精品视频网站| 国产不卡精品视男人的天堂| 亚洲精品久久久一区二区三区| 国产日本欧美一区二区三区在线| 揄拍成人国产精品视频| 亚洲精选中文字幕| 欧美日韩国产影院| 欧美精品免费播放| 国产一区二区丝袜| 久久久久久尹人网香蕉| 久久精品99久久香蕉国产色戒| 日韩av色在线| 日韩激情av在线播放| 大胆欧美人体视频| 国产精品一区二区久久久| 欧美在线视频免费观看| 亚洲色图在线观看| 超碰97人人做人人爱少妇| 18性欧美xxxⅹ性满足| 欧美自拍大量在线观看| 777午夜精品福利在线观看| 国产精品高潮呻吟视频| 国产成+人+综合+亚洲欧美丁香花| 亚洲激情国产精品| 日韩欧美一区视频| 日韩欧美有码在线| 美女啪啪无遮挡免费久久网站| 成人伊人精品色xxxx视频| 91精品国产综合久久男男| zzijzzij亚洲日本成熟少妇| 国外成人在线直播| 国产精品美女免费看| 欧美精品在线免费播放| 激情av一区二区| 91久久久亚洲精品| 欧美在线视频观看免费网站| 麻豆一区二区在线观看| 国产69精品久久久久9999| 国产欧美一区二区| 日韩va亚洲va欧洲va国产| www高清在线视频日韩欧美| 国产噜噜噜噜噜久久久久久久久| 日韩经典中文字幕在线观看| 欧美高清在线播放|