框架是基于spring+myBatis的。

前台页面的部分代码:

<form action="${ctx}/file/upLoadFile.do"method="post" enctype="multipart/form-data" id="form"><table><tbody ><tr ><td>上传文件:</td><td style="padding-left: 10px;"><input type="file" name="file" id="fileInput"></td><td style="padding-left: 80px;"><button type="submit" class="btn btn-primary btn-q btn-outline fa fa-upload"
           class="easyui-validatebox" data-options="required:true">上传</button></td></tr><tr><td colspan="2"><span style="color:red">*上传文件格式为xls,xlsx,txt,csv文件!</span>&nbsp;&nbsp;</td>
    </tr>
  </tbody>
</table></form>

{
  title : '操作',
  halign : 'center',
  align : 'center',
  width : 80,
  field : 'FILE_PATH',
  formatter: function(value,row,index){
  var path = "${ctx}/file/download.do?filePath=" + value ;
  var button = '<button type="button" class="btn btn-primary btn-q btn-outline fa fa-download" class="easyui-validatebox" 
           data-options="required:true">下载</button>';
          return "<a href='" + path  + "'>" + button +  "</a>";
}

上传功能的方法:

@RequestMapping("/upLoadFile")
    public String upload(@RequestParam(value = "file", required = false) MultipartFile file, ModelMap model, HttpServletRequest request) 
        throws Exception {
          //设置相对路径
        String realPath = request.getSession().getServletContext().getRealPath("/upload");
          //获取文件的格式
        String extention = file.getOriginalFilename().substring(file.getOriginalFilename().lastIndexOf(".")+1);
          //对格式进行筛选
        if(extention.equalsIgnoreCase("xls") || extention.equalsIgnoreCase("xlsx") || extention.equalsIgnoreCase("txt") 
        || extention.equalsIgnoreCase("csv")) {
          //在路径下创建文件夹
        File f = new File(realPath);
            String fileName = file.getOriginalFilename();
            String uploadPath = realPath + File.separator + fileName;
            if(!f.exists()) {
                f.mkdir();
            }
          //文件的传输
            file.transferTo(new File(uploadPath));
            Upload upload = new Upload();
            upload.setFileName(fileName);
            upload.setFileLength(String.valueOf(file.getSize()));
            upload.setFileOwner(super.getLoginUser(request).getLoginId());
            upload.setFilePath("/upload/" + fileName);
          //将文件的基本信息存到数据库
            fileQueryService.saveFile(upload);
            request.setAttribute("info","文件上传成功!");
        } else {
            request.setAttribute("info","文件类型不正确,请上传格式为xls,xlsx,txt,csv文件!");
        }
        return "page/file/fileInteraction";
    }

下载功能的方法:

@RequestMapping("/download")
    public String download(String filePath, HttpServletRequest request,
                           HttpServletResponse response) {
        try {
          //获取文件名
            String fileName = filePath.substring(filePath.lastIndexOf("/")+1);
            System.out.println(filePath);
            response.setCharacterEncoding("utf-8");
            response.setContentType("multipart/form-data");
          //处理下载弹出框名字的编码问题
            response.setHeader("Content-Disposition", "attachment;fileName="
                    + new String( fileName.getBytes("gb2312"), "ISO8859-1" ));
          //获取文件的下载路径
            String path = request.getSession().getServletContext().getRealPath(filePath);
            System.out.println(path);
          //利用输入输出流对文件进行下载
            InputStream inputStream = new FileInputStream(new File(path));
            OutputStream os = response.getOutputStream();
            byte[] b = new byte[2048];
            int length;
            while ((length = inputStream.read(b)) > 0) {
                os.write(b, 0, length);
            }
            // 这里主要关闭。
            os.close();
            inputStream.close();
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
        //  返回值要注意,要不然就出现下面这句错误!
        //java+getOutputStream() has already been called for this response
        return null;
    }

最终效果:

下载页面:

文件的上传和下载完整版demo下载:

https://dwz.cn/fgXtRtnu

javaweb项目中的文件上传下载功能的实现的更多相关文章

  1. JavaWeb实现文件上传下载功能实例解析

    转:http://www.cnblogs.com/xdp-gacl/p/4200090.html JavaWeb实现文件上传下载功能实例解析 在Web应用系统开发中,文件上传和下载功能是非常常用的功能 ...

  2. JavaWeb实现文件上传下载功能实例解析 (好用)

    转: JavaWeb实现文件上传下载功能实例解析 转:http://www.cnblogs.com/xdp-gacl/p/4200090.html JavaWeb实现文件上传下载功能实例解析 在Web ...

  3. javaWeb中的文件上传下载

    在Web应用系统开发中,文件上传和下载功能是非常常用的功能,今天来讲一下JavaWeb中的文件上传和下载功能的实现. 对于文件上传,浏览器在上传的过程中是将文件以流的形式提交到服务器端的,如果直接使用 ...

  4. java中的文件上传下载

    java中文件上传下载原理 学习内容 文件上传下载原理 底层代码实现文件上传下载 SmartUpload组件 Struts2实现文件上传下载 富文本编辑器文件上传下载 扩展及延伸 学习本门课程需要掌握 ...

  5. WEB文件上传下载功能

    WEB文件上传下载在日常工作中经常用到的功能 这里用到JS库 http://files.cnblogs.com/meilibao/ajaxupload.3.5.js 上传代码段(HTML) <% ...

  6. Struts2实现文件上传下载功能(批量上传)

    今天来发布一个使用Struts2上传下载的项目, struts2为文件上传下载提供了好的实现机制, 首先,可以先看一下我的项目截图 关于需要使用的jar包,需要用到commons-fileupload ...

  7. JavaWeb 后端 <十四> 文件上传下载

    1.文件上传与下载 案例: 注册表单/保存商品等相关模块! --à 注册选择头像 / 商品图片 (数据库:存储图片路径 / 图片保存到服务器中指定的目录) 1.1 文件上传 文件上传,要点: 前台: ...

  8. Java中实现文件上传下载的三种解决方案

    第一点:Java代码实现文件上传 FormFile file=manform.getFile(); String newfileName = null; String newpathname=null ...

  9. webuploader项目中多文件上传实例

    <!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content ...

随机推荐

  1. php libev扩展使用

    在WorkerMan源码分析 - 实现最简单的原型文章中提到了libevent网络库,前者和libev都是事件驱动编程库高性能.简单说libev对libevent做了改进和精简.libevent使用全 ...

  2. CSS-calc 兼容写法

    width: 90%;/*写给不支持calc()的浏览器*/ width:-moz-calc(100% - (10px + 5px) * 2); width:-webkit-calc(100% - ( ...

  3. android开发中一个activity如何调用另一个xml中的控件

    有时候,我们需要在一个activity中使用另一个activity中的控件,这时候就不能直接findViewById,不然会报错指向空对象,这时就需要像下面这样做. LayoutInflater fa ...

  4. 关于redis和memcached的一些想法

    看了redis和memcached,想到自己前几年以前会把内存分配及调用和程序写在一起.确实是不合理的.这样的话,主进程就会越来越大,而且模块也不是完全独立.不能做到松耦合. 实质就是把内存的读写I/ ...

  5. Servlet 2.x 规范

    Servlet 2.x 规范 sun 公司制订的一种基于 Java 技术的 WEB 服务器功能的组件规范.1997 年六月,Servlet 1.0 版本发行,最新版本 Servlet 4.0 处于研发 ...

  6. visual studio 修改注释快捷键,和断点

    修改成alt+3和alt+4.效果不错 修改插入断点快捷键.这样按F12 就可以插入删除断点了.很爽 tab是批量加缩进 shift+tab 是批量减缩进

  7. nginx设置代理配置

    server {                 listen  8086;                 resolver 8.8.8.8;                 location /{ ...

  8. 在Tomcat中部署Spring jpetstore

    第三篇:在Tomcat中部署Spring jpetstore 博客分类: Java之web SpringTomcatMySQLJDBCMVC  Spring samples中的jpetstore,基于 ...

  9. 车站(NOIP1998)

    题目链接:车站 这一题,首先你要会推导,推到出式子后,就会像我一样简单AC. 给一张图: 这里,t是第二个车站上车人数. 有什么规律? 其实很好找.有如下规律: 第x车站的人数增量为第x-2车站的上车 ...

  10. 使用Hadoop API 压缩HDFS文件

    下篇解压缩:使用Hadoop API 解压缩 HDFS文件 起因: 集群磁盘剩余空间不足. 删除了存储在HDFS上的,一定时间之前的中间结果,发现并不能释放太多空间,查看计算业务,发现,每天的日志存在 ...