springmvc文件的上传/下载

文件上传

前台页面的编写

<form action="/upload.do" method="post" enctype="multipart/form-data">
        <input type="file" name="file">
        <input type="text" name="userName">
        <input type="submit">
</form>

Controllser层的编写

@ResponseBody
    @RequestMapping(value = "upload",method = RequestMethod.POST)
    public String upload(HttpServletRequest request) throws Exception {
        MultipartFile file = null;
        String fileName = null;
        try {
            System.out.println("用户名:" + request.getParameter("userName"));
            MultipartResolver resolver = new CommonsMultipartResolver(request.getSession().getServletContext());
            MultipartHttpServletRequest mrequest = resolver.resolveMultipart(request);
            file = mrequest.getFile("file");
            fileName = file.getOriginalFilename();
        } catch (MultipartException e) {
            e.printStackTrace();
        }
        System.out.println("文件名:" + fileName);
        //通过字节输出流写入
        String realPath = request.getRealPath("/upload");
        System.out.println("文件要上传的路径为:" + realPath);
        DateFormat dateFormat = new SimpleDateFormat("yyyyMMddHHmmssS");
        String format = dateFormat.format(new Date());
        FileOutputStream fos = new FileOutputStream(realPath+"/upload"+format+fileName.substring(fileName.lastIndexOf(".")));
        fos.write(file.getBytes());
        fos.flush();
        fos.close();
        return "upload";
    }

将HttpServletRequest转换成MultiparResolver的两种方式

MultipartHttpServletRequest mrequest = (MultipartHttpServletRequest)request;
MultipartResolver resolver = new CommonsMultipartResolver(request.getSession().getServletContext());
MultipartHttpServletRequest mrequest = resolver.resolveMultipart(request);

文件下载

前台页面的编写

<a href="/down.do?filename=test.txt">测试文件下载</a>

Controllser层的编写

@RequestMapping("down")
    public void download(HttpServletRequest request,HttpServletResponse response) throws Exception {
        request.setCharacterEncoding("utf-8");
        response.setContentType("html/text;charset=utf-8");
        //获得从前端传递过来的文件名
        String filename = request.getParameter("filename");
        //获得项目的绝对路径
        String realPath = request.getRealPath("upload/");
        File file = new File(realPath, filename);
        System.out.println(file.toPath());
        //设置响应类型  ==》 告诉浏览器当前是下载操作,我要下载东西
        response.setContentType("application/x-msdownload");
        //设置下载时文件的显示类型(即文件名称-后缀)   ex:txt为文本类型
        response.setHeader("Content-Disposition", "attachment;filename=" + filename);
        FileInputStream fis = new FileInputStream(realPath+filename);
        ServletOutputStream os = response.getOutputStream();
        byte[] bytes = new byte[1024];
        int len = 0;
        while ((len=fis.read(bytes))!=-1){
            os.write(bytes,0,len);
        }
        fis.close();
    }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值