1. Map<String, Object> rtnMap = new HashMap<String, Object>();
  2. // 获取文件
  3. String tempPath = request.getSession().getServletContext().getRealPath("/temp");
  4. File tmpFile = new File(tempPath);
  5. // 消息提示
  6. try {
  7. // 使用Apache文件上传组件处理文件上传步骤:
  8. // 1、创建一个DiskFileItemFactory工厂
  9. DiskFileItemFactory factory = new DiskFileItemFactory();
  10. // 设置工厂的缓冲区的大小,当上传的文件大小超过缓冲区的大小时,就会生成一个临时文件存放到指定的临时目录当中。
  11. factory.setSizeThreshold(1024 * 100);// 设置缓冲区的大小为100KB,如果不指定,那么缓冲区的大小默认是10KB
  12. // 设置上传时生成的临时文件的保存目录
  13. factory.setRepository(tmpFile);
  14. // 2、创建一个文件上传解析器
  15. ServletFileUpload upload = new ServletFileUpload(factory);
  16. // 解决上传文件名的中文乱码
  17. upload.setHeaderEncoding("UTF-8");
  18. // 3、判断提交上来的数据是否是上传表单的数据
  19. if (!ServletFileUpload.isMultipartContent(request)) {
  20. // 按照传统方式获取数据
  21. rtnMap.put("code", "-1");
  22. rtnMap.put("msg", "导入失败,请选择上传文件!");
  23. return rtnMap;
  24. }
  25. // 设置上传单个文件的大小的最大值,目前是设置为1024*1024字节,也就是1MB
  26. upload.setFileSizeMax(1024 * 1024);
  27. // 设置上传文件总量的最大值,最大值=同时上传的多个文件的大小的最大值的和,目前设置为10MB
  28. upload.setSizeMax(1024 * 1024 * 10);
  29. // 4、使用ServletFileUpload解析器解析上传数据,解析结果返回的是一个List<FileItem>集合,每一个FileItem对应一个Form表单的输入项
  30. MultipartFile item = ((MultipartHttpServletRequest) request).getFile("fileExl");
  31. if (item.getSize() > 1024 * 1024) {
  32. rtnMap.put("code", "-1");
  33. rtnMap.put("msg", "导入失败,您上传的文件过大,单个文件不能超过1M!");
  34. return rtnMap;
  35. }
  36. String filename = item.getOriginalFilename();
  37. logger.info(filename);
  38. if (filename == null || filename.trim().equals("")) {
  39. rtnMap.put("code", "-1");
  40. rtnMap.put("msg", "导入失败,请选择上传文件!");
  41. return rtnMap;
  42. }
  43. // 注意:不同的浏览器提交的文件名是不一样的,有些浏览器提交上来的文件名是带有路径的,如:
  44. // c:\a\b\1.txt,而有些只是单纯的文件名,如:1.txt
  45. // 处理获取到的上传文件的文件名的路径部分,只保留文件名部分
  46. filename = filename.substring(filename.lastIndexOf("/") + 1);
  47. // 得到上传文件的扩展名
  48. String fileExtName = filename.substring(filename.lastIndexOf(".") + 1);
  49. // 如果需要限制上传的文件类型,那么可以通过文件的扩展名来判断上传的文件类型是否合法
  50. logger.info("上传的文件的扩展名是:" + fileExtName);
  51. final String[] CONTACT_ALLOW_TYPES = {"xlsx", "xls"};
  52. boolean isHave = false;
  53. for (String ext : CONTACT_ALLOW_TYPES) {
  54. if (ext.equals(fileExtName.toLowerCase())) {
  55. isHave = true;
  56. break;
  57. }
  58. }
  59. if (!isHave) {
  60. rtnMap.put("code", "-1");
  61. rtnMap.put("msg", "导入失败,请选择正确文件文件!");
  62. return rtnMap;
  63. }
  64. // 获取item中的上传文件的输入流
  65. InputStream is = item.getInputStream();
  66. zzjgFacade.batchImportZzjg(new RequestBean(), is);
  67.  
  68. } catch (Exception e) {
  69. rtnMap.put("code", "-1");
  70. rtnMap.put("msg", "导入失败!");
  71. return rtnMap;
  72. }

//实际应用

  1. public BWJsonResult uploadFile(HttpServletRequest request) {
  2. // 上传时生成的临时文件保存目录
  3. String tempPath = request.getSession().getServletContext().getRealPath("/temp");
  4. File tmpFile = new File(tempPath);
  5. // 消息提示
  6. try {
  7. DiskFileItemFactory factory = new DiskFileItemFactory();
  8. factory.setSizeThreshold(1024 * 100);// 设置缓冲区的大小为100KB,如果不指定,那么缓冲区的大小默认是10KB
  9. factory.setRepository(tmpFile);
  10. ServletFileUpload upload = new ServletFileUpload(factory);
  11. upload.setHeaderEncoding("UTF-8");
  12. if (!ServletFileUpload.isMultipartContent(request)) {
  13. logger.info("文件不可为空");
  14. return new BWJsonResult(new MoiraiException(MoiraiErrorEnum.MOIRAI_PARAMS_MISS_ERROR));
  15. }
  16. upload.setFileSizeMax(1024 * 1024 * 10);
  17. upload.setSizeMax(1024 * 1024 * 100);
  18. // 4、使用ServletFileUpload解析器解析上传数据,解析结果返回的是一个List<FileItem>集合,每一个FileItem对应一个Form表单的输入项
  19. MultipartFile item = ((MultipartHttpServletRequest) request).getFile("file1");
  20. if (item.getSize() > 1024 * 1024 * 10) {
  21. return new BWJsonResult(new MoiraiException(MoiraiErrorEnum.MOIRAI_SYS_FILE_TOL_ERROR));
  22. }
  23. // 得到上传的文件名称,
  24. String filename = item.getOriginalFilename();
  25. logger.info("上传的文件名称" + filename);
  26. if (filename == null || filename.trim().equals("")) {
  27. return new BWJsonResult(new MoiraiException(MoiraiErrorEnum.MOIRAI_PARAMS_MISS_ERROR));
  28. }
  29. filename = filename.substring(filename.lastIndexOf("/") + 1);
  30. String fileExtName = filename.substring(filename.lastIndexOf(".") + 1);
  31. logger.info("上传的文件的扩展名是:" + fileExtName);
  32.  
  33. InputStream in = item.getInputStream();
  34. String saveFilename = AdminUtils.makeFileName(fileExtName);
  35. String realSavePath = AdminUtils.makePath(saveFilename, "specialUse");
  36. String filurl = realSavePath + "/" + saveFilename;
  37. logger.info("文件上传路径为:" + filurl);
  38. int result = HttpClientUtil.sendPostFiles(uploadUrl + filurl, in);
  39. in.close();
  40. logger.info("文件保存路径是:" + uploadUrl + filurl);
  41. logger.info("文件下载路径是:" + downloadUrl + filurl);
  42. if (result == 1) {
  43. //response.getWriter().write("0" + "," + "文件上传成功!" + "," + filurl + "," + filename);
  44. return new BWJsonResult(new SysFileResponse(downloadUrl + filurl));
  45. } else {
  46. // response.getWriter().write("-1" + "," + "文件上传失败,原因:网络异常");
  47. return new BWJsonResult(new MoiraiException(MoiraiErrorEnum.MOIRAI_SYS_FILE_IN_ERROR));
  48. }
  49. } catch (Exception e) {
  50. logger.error("", e);
  51. //response.getWriter().write("-1" + "," + "文件上传失败,原因:" + e.getMessage());
  52. return new BWJsonResult(new MoiraiException(MoiraiErrorEnum.MOIRAI_TENANT_ERROR));
  53. }
  54. }

//调用代码

  1. <html>
  2. <body>
  3. <form action="http://127.0.0.1:8087/sys/uploadfile" method="POST" enctype="multipart/form-data">
  4. <input type="file" name="file1" />
  5. <input type="submit" name="submit" />
  6. </form>
  7. </body>
  8. </html>

文件上传Apache的更多相关文章

  1. Spring MVC文件上传教程 commons-io/commons-uploadfile

    Spring MVC文件上传教程 commons-io/commons-uploadfile 用到的依赖jar包: commons-fileupload 1.3.1 commons-io 2.4 基于 ...

  2. linux文件上传,给文件或目录添加apache权限

    系统环境:ubuntu11.10/apache2/php5.3.6 在LAMP环境中,测试一个简单的php文件上传功能时,发现/var/log/apache2/error.log中出现如下php警告: ...

  3. Apache Commons fileUpload实现文件上传之一

      需要两个jar包: commons-fileupload.jar Commons IO的jar包(本文使用commons-io-2.4.jar) 利用Servlet来实现文件上传. package ...

  4. Web---文件上传-用apache的工具处理、打散目录、简单文件上传进度

    我们需要先准备好2个apache的类: 上一个博客文章只讲了最简单的入门,现在来开始慢慢加深. 先过渡一下:只上传一个file项 index.jsp: <h2>用apache的工具处理文件 ...

  5. Spring文件上传出错:java.lang.ClassCastException: org.apache.catalina.connector.Request

    java.lang.ClassCastException: org.apache.catalina.connector.RequestFacade cannot be cast to org.spri ...

  6. Apache Commons FileUpload 实现文件上传

    Commons FileUpload简介 Apache Commons是一个专注于可重用Java组件开发的 Apache 项目.Apache Commons项目由三个部分组成: 1.Commons P ...

  7. apache fileupload 文件上传,及文件进度设置获取

    文件上传action处理: boolean isMultipart = ServletFileUpload.isMultipartContent(request); if (isMultipart) ...

  8. apache的MultipartEntityBuilder文件上传

    本文讲解多文件上传方法,不比较上传有几种方法和效率,而是定向分析apache的httpmime包的MultipartEntityBuilder类,源码包:httpmime-4.5.2.jar 一.常用 ...

  9. WEB文件上传之apache common upload使用(一)

    文件上传一个经常用到的功能,它有许多中实现的方案. 页面表单 + RFC1897规范 + http协议上传 页面控件(flash/html5/activeX/applet) + RFC1897规范 + ...

随机推荐

  1. 【MVC】使用笔记

    1,在ASP.NET MVC中,路由机制特别碉堡,直接对应于动作方法.没有必要给每一个动作方法添加视图,当视图返回View时,路由系统会自动寻找指定目录下的视图资源. public ViewResul ...

  2. hexo干货系列:(总纲)搭建独立博客初衷

    前言 我是一名程序员,以前知识整理都是整理在为知笔记上,博客用的比较少,更别说是使用独立博客,因为不会... 2016年过年在家期间偶然的机会萌发了自己要搭建一个属于自己的独立博客的想法,于是就有了下 ...

  3. PTA 02-线性结构3 Reversing Linked List (25分)

    题目地址 https://pta.patest.cn/pta/test/16/exam/4/question/664 5-2 Reversing Linked List   (25分) Given a ...

  4. HDU 3932 模拟退火

    HDU3932 题目大意:给定一堆点,找到一个点的位置使这个点到所有点中的最大距离最小 简单的模拟退火即可 #include <iostream> #include <cstdio& ...

  5. POJ 2115 C Looooops【数论】

    很容易看出来一个同余式,说到底是解一个线性同余方程,计算机解通常有拓展欧几里得和欧拉定理两种算法,参照去年的NOIP水题,问题是这题数据范围是2^32所以要int64 TAT #include< ...

  6. JS把数字金额转换成中文大写数字的函数

    //把数字金额转换成中文大写数字的函数 function num2rmb ($num){ $c1="零壹贰叁肆伍陆柒捌玖"; $c2="分角元拾佰仟万拾佰仟亿" ...

  7. 数字游戏(codevs 1085)

    题目描述 Description 丁丁最近沉迷于一个数字游戏之中.这个游戏看似简单,但丁丁在研究了许多天之后却发觉原来在简单的规则下想要赢得这个游戏并不那么容易.游戏是这样的,在你面前有一圈整数(一共 ...

  8. WebService流行框架CXF

    CXF官方网址:http://cxf.apache.org/   CXF官方网址:官网学习地址:http://cxf.apache.org/docs/index.html   官网下载cxf压缩文件: ...

  9. rabbitmq management Login Failed

    默认用户guest 只允许localhost登录. so... 我们自己建立用户 1. 用户管理 用户管理包括增加用户,删除用户,查看用户列表,修改用户密码. 相应的命令 (1) 新增一个用户 rab ...

  10. $.post()用法例子

    1:删除用户操作 $('.delete').click(function(){ var classid=$(this).parent().siblings().eq(0).children().val ...