SSM 文件的上传与下载

25 篇文章 0 订阅
3 篇文章 0 订阅

文件上传依赖:

    <!--文件上传-->
    <dependency>
      <groupId>commons-fileupload</groupId>
      <artifactId>commons-fileupload</artifactId>
      <version>1.4</version>
    </dependency>
springmvc 配置文件的配置    
<!--配置文件上传  id必须为 multipartResolver -->
    <bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
        <!--注入文件上传下载大小限制单位字节 2M=2097152  字节默认:没有限制·-->
        <property name="maxUploadSize" value="20971520"/>
    </bean>
<h1>文件上传</h1>
    <form action="${pageContext.request.contextPath}/upload" method="post" enctype="multipart/form-data">
        <input type="file" name="img">
        <input type="submit" value="上传文件">
    </form>
</body>
@RequestMapping("upload")
public String upload(MultipartFile img, HttpServletRequest request) throws IOException {

    System.out.println("文件名" + img.getOriginalFilename());
    System.out.println("img.getName() = " + img.getName());
    System.out.println("img.getSize() = " + img.getSize());
    System.out.println("img.getContentType() = " + img.getContentType());

    //文件上传
    //根据upload相对路径获取部署到服务之后绝对路径
    String path = request.getSession().getServletContext().getRealPath("/upload");

    //修改文件名称
    String extension = FilenameUtils.getExtension(img.getOriginalFilename());
    String newFileName = UUID.randomUUID().toString().replace("-", "") + "." + extension;

    //生成当天日期目录
    LocalDate now = LocalDate.now();
    File dataDir = new File(path, now.toString());
    if (!dataDir.exists()) {
        dataDir.mkdirs();
    }

    //将文件上传到upload对应的绝对路径
    img.transferTo(new File(dataDir, newFileName));

    return "redirect:/index.jsp";

}

文件下载

//处理文件下载
@RequestMapping("/download")
public void download(String fileName, HttpServletRequest request, HttpServletResponse response) throws IOException {
    System.out.println("下载的文件名称" + fileName);

    //根据下载相对目录获取下载目录在服务器部署之后绝对目录
    String realPath = request.getSession().getServletContext().getRealPath("/down");

    System.out.println(realPath + "===" + fileName);

    //通过文件输入流读取文件
    FileInputStream is = new FileInputStream(new File(realPath, fileName));

    //获取响应输出流
    response.setContentType("text/plain; charset=UTF-8");
    //以附件形式下载  attachment:附件  inline 在线打开
    response.setHeader("content-disposition", "attachment;fileName=" + URLEncoder.encode(fileName,"UTF-8"));
    ServletOutputStream outputStream = response.getOutputStream();

        //使用工具类处理下载流复制
        IOUtils.copy(is, outputStream);
        IOUtils.closeQuietly(is);
        IOUtils.closeQuietly(outputStream);

//        int len;
//        byte[] bytes = new byte[1024];
//        while ((len = is.read(bytes)) != -1) {
//            outputStream.write(bytes, 0, len);
//        }
//
//        is.close();
//        outputStream.close();


}
  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值