1.html内容

<div><form method="post" action="/Cyberspace/main/informationBatchAdd.do" enctype="multipart/form-data"><input type="file" id="excelFile" multiple="multiple" name="file"/><button type="submit">批量上传</button></form>
</div>

2.服务端后台支持多文件上传的接口

 /*** 信息上报批量增加*/@RequestMapping(value = "informationBatchAdd", method = RequestMethod.POST)@ResponseBodypublic JSONResult informationBatchAdd(MultipartHttpServletRequest request) {JSONResult jsonResult;try {Integer result = 0;MultiValueMap<String, MultipartFile> multiValues = request.getMultiFileMap();//获取请求中所有的文件流Iterator<Map.Entry<String, List<MultipartFile>>> iterator = multiValues.entrySet().iterator();while (iterator.hasNext()) {Map.Entry<String, List<MultipartFile>> entry = iterator.next();for (MultipartFile file : entry.getValue()) {InputStream in = file.getInputStream();//转换成输入流XSSFWorkbook readWb = new XSSFWorkbook(in);for (int i = 0; i < readWb.getNumberOfSheets(); i++) {//遍历该表格中所有的工作表,i表示工作表的数量 getNumberOfSheets表示工作表的总数XSSFSheet sheet = readWb.getSheetAt(i);。。。Integer totalRow = sheet.getLastRowNum();//获取excel共有多少行for (int rowNum = 1; rowNum <= totalRow; rowNum++) { // 循环行RowXSSFRow hssfRow = sheet.getRow(rowNum);if (hssfRow != null && hssfRow.getPhysicalNumberOfCells() >= 7) {//getPhysicalNumberOfCells 获取纵列数。。。}}result += 。。。;}}}jsonResult = new JSONResult(CODE_SUCCESS, MSG_SUCCESS, result);//JSONResult是自己定义的一个类} catch (Exception e) {jsonResult = new JSONResult(CODE_FAIL, MSG_FAIL, null);e.printStackTrace();}return jsonResult;}

3.假如遇到要中转上传文件流到以上的接口中,那么下面的内容就是你的福音

    /*** 中转文件** @param files 上传的文件,该参数的获取 request.getFiles("xxxx")或者参照第二步中的方法* @return 响应结果*/public static String httpClientUploadFile(List<MultipartFile> files, String remoteUrl) {final String remote_url = remoteUrl;// 第三方服务器请求地址CloseableHttpClient httpClient = HttpClients.createDefault();String result = "";try {HttpPost httpPost = new HttpPost(remote_url);MultipartEntityBuilder builder = MultipartEntityBuilder.create();builder.setMode(HttpMultipartMode.BROWSER_COMPATIBLE);//设置浏览器兼容模式for (int i = 0; i < files.size(); i++) {MultipartFile file = files.get(i);String fileName = file.getOriginalFilename();builder.addBinaryBody("file" + i, file.getInputStream(), ContentType.MULTIPART_FORM_DATA, fileName);// 文件流builder.addTextBody("filename", fileName);// 类似浏览器表单提交,对应input的name和value
            }HttpEntity entity = builder.build();httpPost.setEntity(entity);HttpResponse response = httpClient.execute(httpPost);// 执行提交HttpEntity responseEntity = response.getEntity();result = EntityUtils.toString(responseEntity, UTF8);} catch (IOException e) {e.printStackTrace();} catch (Exception e) {e.printStackTrace();} finally {try {httpClient.close();} catch (IOException e) {e.printStackTrace();}}return result;}

4.中转下载文件

/*接口:http://192.168.1.10:8080/GRSS/yw/api/fileDownload-------请求参数----path:upload/1505474431679.zip //文件路径 以upload/ 开头filename: report.zip , //源文件名------测试用例----请求地址://http://localhost:8888/Cyberspace/main/fileDownload.do?filename=JSSDK中文.html获取这个文件://url = "http://210.14.152.181:8188/examples/JSSDK.html";*/@RequestMapping(value = "fileDownload", method = RequestMethod.GET)@ResponseBodypublic String fileDownload(HttpServletRequest request, HttpServletResponse response) {String url;try {String fileName = StringUtils.isNotEmpty(request.getParameter("filename")) ? request.getParameter("filename") : new Date().getTime() + "";fileName = new String(fileName.getBytes("ISO8859-1"),"UTF-8");//解决中文get方式乱码的问题url = "http://192.168.1.100:8188/examples/JSSDK.html";//我想下载这个JSSDK这个html文件FileUtil.downloadFileFromNet(url, fileName, response);} catch (Exception e) {e.printStackTrace();}return null;}

  /** FiletUtil.downloadFileFromNet* 从网络中下载文件*/public static void downloadFileFromNet(String urlPath, String fileName, HttpServletResponse response) throws MalformedURLException {InputStream fis = null;OutputStream os = null;try {URL url = new URL(urlPath);URLConnection urlConnection = url.openConnection();// 以流的形式下载文件fis = new BufferedInputStream(urlConnection.getInputStream());// 设置响应报头
            response.reset();response.addHeader("Content-Disposition", "attachment;filename=" + URLEncoder.encode(fileName, ENCODING));response.setCharacterEncoding(ENCODING);// 写入响应流数据os = new BufferedOutputStream(response.getOutputStream());byte[] bytes = new byte[1024];while (fis.read(bytes) != -1) {os.write(bytes);}} catch (Throwable e) {e.printStackTrace();} finally {try {if (os != null) {os.close();}if (fis != null) {fis.close();}} catch (IOException e) {e.printStackTrace();}}}

Spring MVC + Java 多文件上传及多文件中转上传相关推荐

  1. Spring MVC 学习总结(五)——校验与文件上传 转自 张果 博客;已经编程校验;正确无误;...

    Spring MVC 学习总结(五)--校验与文件上传 目录 一.Spring MVC验证器Validator 1.1.定义验证器 1.2.执行校验 1.3.在UI中添加错误标签 1.4.测试运行 二 ...

  2. Spring MVC 学习总结(五)——校验与文件上传

    目录 一.Spring MVC验证器Validator 1.1.定义验证器 1.2.执行校验 1.3.在UI中添加错误标签 1.4.测试运行 二.JSR303验证器 2.1.添加hibernate-v ...

  3. maven创建SSM(Spring + Spring MVC +Mybatis)项目时的porn.xml文件下各个依赖包的作用

    从上到下依次进行说明 首先是这个: <properties><project.build.sourceEncoding>UTF-8</project.build.sour ...

  4. spring mvc java 把多文件打包成zip,并下载

    再来一篇 /*** 压缩并导出文件* @param zipPath 压缩文件临时路径 路径最后不要有 /* @param zipName 压缩为文件名 **.zip* @param createFil ...

  5. 解决Spring MVC整合Shiro出现无法访问静态资源文件的问题

    解决方案:shiro过滤器配置拦截器链中添加"/static/**=anno"即可,"/static/**"为静态资源文件路径. <property na ...

  6. Spring MVC 如何上传多个文件到指定位置

    Spring MVC 如何上传多个文件到指定位置 太阳火神的美丽人生 (http://blog.csdn.net/opengl_es) 本文遵循"署名-非商业用途-保持一致"创作公 ...

  7. IDEA中Spring MVC实现图片上传并显示

    我们都知道web项目需要部署到tomcat服务器中运行 那么,我们又是如何通过tomcat来访问存放在本地磁盘中的图片呢?,通过tomcat访问本地图片,需要配置虚拟路径,下面介绍两种配置虚拟路径的方 ...

  8. java配置springmvc_Java方式配置Spring MVC

    概述 使用Java方式配置Spring MVC,以及回顾一下Spring MVC的各种用法. Spring MVC简述 关于Spring MVC的介绍网上有很多,这里就不再赘述了,只是要说一下,Spr ...

  9. spring_在Spring MVC中使用多个属性文件

    spring 每个人都听说过将单个Web应用程序组合成一个大型Web应用程序的门户. 门户软件的工作原理类似于mashup -来自多个来源的内容是在单个服务中获取的,大部分都显示在单个网页中. 门户软 ...

最新文章

  1. 1.QT刷新ROS地图画面时,地图画面时不时卡住,甚至整个界面挂掉退出
  2. 未将对象引用设置到对象的实例
  3. scrum敏捷开发工具leangoo如何添加成员
  4. 使用netfilter框架处理ARP报文
  5. array.slice_Ruby中带有示例的Array.slice()方法
  6. Leetcode431.将N叉树编码为二叉树(golang)
  7. linux 临时去掉cp别名_命令别名:保护和服务
  8. unix操作系统图标大全
  9. 百度文库复制内容,留作笔记
  10. bt种子简介与magnet磁力介绍
  11. mobi格式转换成pdf格式
  12. android jni javah,JAVAH找不到类(android ndk)
  13. python答辩毕设ppt_毕设答辩ppt总结
  14. 【PX4学习笔记】3. PX4 固件烧写(1 探索过程)
  15. python opencv生成背景透明图标
  16. 有人说:世间唯一无刺的玫瑰,就是朋友。
  17. 进阶篇:2)DFMA方法的运用
  18. Mybatis-Plus 传入时间查询的方式
  19. 赛力斯华为智选SF5入驻华为旗舰店,将通过华为零售渠道销售
  20. 华为计算机黑屏怎么办,华为电脑开机屏幕没反应(开机黑屏的3个原因及解决法)...

热门文章

  1. swing版本山寨微信打飞机
  2. iphone开发之仿微信用户引导界面的实现
  3. ISO/IEC 9126 软件质量模型
  4. hadoop 光环大数据_Hadoop - HDFS的数据流剖析
  5. html中写jq,在jQuery中,能够操作HTML代码及其文本的方法是()
  6. 高3老师给大一学生的一封信
  7. 用word制作正规公文(转)
  8. 使用深山红叶工具盘备份瘫痪服务器的数据
  9. 腾讯云从良心云转变成“凉心云”,乱封禁服务器与域名怎么办?
  10. python爬取动态页面图片_python动态网页爬取:爬取pexel上的图片