SpringMVC结合Ajaxfileupload异步多文件上传至远程服务器
发布时间:2020-12-15 00:11:12 所属栏目:Java 来源:网络整理
导读:今天PHP站长网 52php.cn把收集自互联网的代码分享给大家,仅供参考。 项目中我们可能会使用到异步上传并且有时需要是异步的,那么Ajaxfileupload是一个不错的选择,最近刚 做了一个多文件上传到远程服务器,远程服务器提供
以下代码由PHP站长网 52php.cn收集自互联网 现在PHP站长网小编把它分享给大家,仅供参考
项目中我们可能会使用到异步上传并且有时需要是异步的,那么Ajaxfileupload是一个不错的选择,最近刚 做了一个多文件上传到远程服务器,远程服务器提供接口,当远程服务器上传结束后返回一个文件的服务器地址。分享出来给有需要的参考 下,Ajaxfileupload默认是一次只能上传一个文件的,所以需要稍稍修改下他的源码就可以上传多个文件,这里就不多说,百度一下自然就知道。
<input?type="file"?id="playeraddress"?name="playeraddress"?/> <input?type="file"?id="cover"?name="cover"?/> //这里就是两个file?id自己定义 $.ajaxFileUpload({ ????url?:?web_path+'upload/upload.do',????secureuri?:?false,????data?:?data,//需要传递的数据?json格式 ????fileElementId?:['playeraddress','cover'],????dataType?:?'json',????success?:?function(data)?{ ???????????//上传成功后的回调。 ????},????error?:?function(data)?{ ????} }); /** ?????* ?????*? ?????*?@param?request ?????*?@param?response ?????*?@param?audioItem ?????*?@return ?????*/ ????@RequestMapping(value?=?"/upload.do",?method?=?{?RequestMethod.POST?}) ????@ResponseBody ????public?String?addMusic(HttpServletRequest?request,????????????HttpServletResponse?response,?AudioItem?audioItem)?{ ????????//这里无需理会,这只是 ????????String?uploadFileUrl?=?GlobalUtil?.getValue("upload_audioItem_audio_url"); ????????String?uploadIconUrl?=?GlobalUtil.getValue("upload_audioItem_pic_url"); ????????CommonsMultipartResolver?resolver?=?new?CommonsMultipartResolver( ????????????????request.getServletContext()); ????????if?(resolver.isMultipart(request))?{ ????????????MultipartHttpServletRequest?multiRequest?=?(MultipartHttpServletRequest)?request; ????????????//?取得request中的所有文件名 ????????????Iterator<String>?iter?=?multiRequest.getFileNames(); ????????????while?(iter.hasNext())?{ ????????????????String?fileName?=?iter.next(); ????????????????//?取得上传文件 ????????????????MultipartFile?file?=?multiRequest.getFile(fileName); ????????????????/** ?????????????????*?获取文件名 ?????????????????*/ ????????????????String?originalFilename?=?file.getOriginalFilename(); ???????????????? ????????????????if?("playeraddress".equals(fileName)&&!"".equals(originalFilename))?{ ????????????????????try?{ ????????????????????????//这里的upload方法就是以http?post的方式上传文件的?稍后贴出 ????????????????????????String?url?=?BaseService.upload(uploadFileUrl,????????????????????????????????file.getOriginalFilename(),????????????????????????????????file.getInputStream()); ????????????????????}?catch?(IOException?e)?{ ????????????????????????//?TODO?Auto-generated?catch?block ????????????????????????e.printStackTrace(); ????????????????????} ????????????????} ????????????????if?("cover".equals(fileName)&&!"".equals(originalFilename)){ ????????????????????try?{ ????????????????????????String?icon?=?BaseService.upload(uploadIconUrl,????????????????????????????????file.getInputStream()); ????????????????????}?catch?(IOException?e)?{ ????????????????????????//?TODO?Auto-generated?catch?block ????????????????????????e.printStackTrace(); ????????????????????} ????????????????} ????????????} ????????????//这里需要注意?使用Ajaxfileupload需要使用以下方式返回结果?回调不了success?方法 ????????????response.setContentType("text/html"); ?? ????????????try?{ ????????????????response.getWriter().write("ok"); ????????????}?catch?(IOException?e)?{ ????????????????e.printStackTrace(); ????????????} ????????} ????????return?null; ????} //最后一步了? ????public?static?String?upload(String?httpurl,?String?fileName,?InputStream?inputStream)?{ ????????String?result?=?""; ????????try?{ ????????????//这里看你的网络环境?按需设置代理??正常都不需要理会 ????????????if?(true)?{ ????????????????System.setProperty("http.proxyHost",?BaseService.PROXY_IP); ????????????????System.setProperty("http.proxyPort",?BaseService.PROXY_PORT); ????????????} ????????????String?BOUNDARY?=?"---------7d4a6d158c9";?//?定义数据分隔线 ????????????URL?url?=?new?URL(httpurl); ????????????HttpURLConnection?conn?=?(HttpURLConnection)?url.openConnection(); ????????????//?发送POST请求必须设置如下两行 ????????????conn.setDoOutput(true); ????????????conn.setDoInput(true); ????????????conn.setUseCaches(false); ????????????conn.setRequestMethod("POST"); ????????????conn.setRequestProperty("connection",?"Keep-Alive"); ????????????conn.setRequestProperty("user-agent",????????????????????"Mozilla/4.0?(compatible;?MSIE?6.0;?Windows?NT?5.1;?SV1)"); ????????????conn.setRequestProperty("Charsert",?"UTF-8"); ????????????conn.setRequestProperty("Content-Type",????????????????????"multipart/form-data;?boundary="?+?BOUNDARY); ????????????OutputStream?out?=?new?DataOutputStream(conn.getOutputStream()); ????????????byte[]?end_data?=?("rn--"?+?BOUNDARY?+?"--rn").getBytes();//?定义最后数据分隔线 ????????????StringBuilder?sb?=?new?StringBuilder(); ????????????sb.append("--"); ????????????sb.append(BOUNDARY); ????????????sb.append("rn"); ????????????sb.append("Content-Disposition:?form-data;name="file"?+?1 ????????????????????+?"";filename=""?+?fileName?+?""rn"); ????????????sb.append("Content-Type:application/octet-streamrnrn"); ????????????byte[]?data?=?sb.toString().getBytes(); ????????????out.write(data); ????????????DataInputStream?in?=?new?DataInputStream(inputStream); ????????????int?bytes?=?0; ????????????byte[]?bufferOut?=?new?byte[1024]; ????????????while?((bytes?=?in.read(bufferOut))?!=?-1)?{ ????????????????out.write(bufferOut,?0,?bytes); ????????????} ????????????out.write("rn".getBytes());?//?多个文件时,二个文件之间加入这个 ????????????in.close(); ????????????out.write(end_data); ????????????out.flush(); ????????????out.close(); ????????????//?定义BufferedReader输入流来读取URL的响应 ????????????BufferedReader?reader?=?new?BufferedReader(new?InputStreamReader( ????????????????????conn.getInputStream())); ????????????String?line?=?null; ????????????while?((line?=?reader.readLine())?!=?null)?{ ????????????????result+=line; ????????????} ????????}?catch?(Exception?e)?{ ????????????System.out.println("发送POST请求出现异常!"?+?e); ????????}???? ????????return?new?JSONObject(result).getString("url"); ????} //?到这就结束了!希望能帮到你。 以上内容由PHP站长网【52php.cn】收集整理供大家参考研究 如果以上内容对您有帮助,欢迎收藏、点赞、推荐、分享。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- Java 8功能接口分配上下文
- java – 如何在捕获IOException时关闭ServerSocket连接?
- JavaFX – CSS样式列表
- the resource is not on the build path of a java project
- Java:在org.w3c.dom文档中获取元素的xpath
- JSP JSTL <c:catch>标签:捕获异常标签
- Java的HashMap键值对存储结构解析
- Java 8避免了大量的if / else语句
- java – 使用Clipboard和AbstractAction进行JTable复制和粘
- java – SPRING:向spring security用户添加自定义用户详细