SSM中文件上传与下载

单文件上传

在spring-mvc中配置文件上传的解析器

<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
    <!--  默认编码   -->
    <property name="defaultEncoding" value="utf-8" />
    <!--  文件大小最大值  -->
    <property name="maxUploadSize" value="10485760000" />
    <!-- 内存中的最大值   -->
    <property name="maxInMemorySize" value="40960" />
</bean>

编写Controller文件:
@RequestMapping("upload")
    public ModelAndView uploadFile(MultipartFile uploadFile,HttpSession session){
        //获取上传文件名
        String filename = uploadFile.getOriginalFilename();
        //获取WebRoot下的images文件夹的绝对路径作为前半部分路径
        String leftPath = session.getServletContext().getRealPath("/images");
        //将文件的前半部分路径与文件名拼接
        File file = new File(leftPath, filename);
        try {
            uploadFile.transferTo(file);
        } catch (IllegalStateException | IOException e) {
            e.printStackTrace();
        }
        ModelAndView mv = new ModelAndView();
        mv.setViewName("index");
        return mv;
    }

网页代码:
<form action="${pageContext.request.contextPath }/upload" method="post" enctype="multipart/form-data">
   <h2>文件上传</h2>
                文件:<input type="file" name="uploadFile"/><br/><br/>
      <input type="submit" value="上传"/>
</form>

到这里单文件上传就已经完成了,下面就是最后效果
上传后的结果

多文件上传

多文件上传即在原本上传的基础上,将传入参数MultipartFile uploadFile修改为MultipartFile[] uploadFile数组形式,在上传时就可以遍历这个数组来完成多文件上传

@RequestMapping("upload")
    public ModelAndView uploadFile(MultipartFile[] uploadFile,HttpSession session){
        //获取上传文件名
        for (int i = 0; i < uploadFile.length; i++) {
            String filename = uploadFile[i].getOriginalFilename();
            //获取WebRoot下的images文件夹的绝对路径作为前半部分路径
            String leftPath = session.getServletContext().getRealPath("/images");
            //将文件的前半部分路径与文件名拼接
            File file = new File(leftPath, filename);
            try {
                uploadFile[i].transferTo(file);
            } catch (IllegalStateException | IOException e) {
                e.printStackTrace();
            }
        }
        ModelAndView mv = new ModelAndView();
        mv.setViewName("index");
        return mv;
    }

jsp页面
<form action="${pageContext.request.contextPath }/upload" method="post" enctype="multipart/form-data">
   <h2>文件上传</h2>
      文件1:<input type="file" name="uploadFile"/><br/>
      文件2:<input type="file" name="uploadFile"/><br/>
      文件3:<input type="file" name="uploadFile"/><br/>
   <input type="submit" value="上传"/>
</form>

多文件上传结果

文件下载

文件下载的一些内容可以去看看对请求头的分析


@RequestMapping("/download")
    public ResponseEntity<byte[]> downFile() throws IOException{
        File file = new File("C:\\Users\\TU\\workspace\\.metadata\\.plugins\\org.eclipse.wst.server.core\\tmp0\\wtpwebapps\\SSM_beta1\\images\\456.png");
        HttpHeaders headers = new HttpHeaders();
        String filename = new String("helloWorld.png".getBytes("UTF-8"),"iso-8859-1");
        //设置文件名
        headers.setContentDispositionFormData("attachment", filename);
        //以文件下载的形式来输出流
        headers.setContentType(MediaType.APPLICATION_OCTET_STREAM);
        return new ResponseEntity<byte[]>(FileUtils.readFileToByteArray(file),    
                headers, HttpStatus.CREATED);
    }


下载效果
下载效果

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
SSM框架文件上传下载可以通过以下步骤实现: 1. 文件上传: - 在前端页面上添加文件选择框和上传按钮; - 在后端控制器添加处理文件上传的方法; - 在方法使用SpringMVC的MultipartFile类获取上传的文件; - 对文件进行处理并保存到服务器上。 示例代码: ```java @RequestMapping(value = "/upload", method = RequestMethod.POST) @ResponseBody public String upload(MultipartFile file) { // 获取上传的文件名 String fileName = file.getOriginalFilename(); // 处理文件并保存到服务器上 // ... return "上传成功!"; } ``` 2. 文件下载: - 在前端页面上添加下载按钮; - 在后端控制器添加处理文件下载的方法; - 在方法使用SpringMVC的ResponseEntity类将文件发送到客户端。 示例代码: ```java @RequestMapping(value = "/download", method = RequestMethod.GET) public ResponseEntity<byte[]> download() throws IOException { // 获取要下载的文件 File file = new File("文件路径"); // 将文件转换为字节数组 byte[] body = FileUtils.readFileToByteArray(file); // 设置响应头 HttpHeaders headers = new HttpHeaders(); headers.add("Content-Disposition", "attachment;filename=" + file.getName()); HttpStatus statusCode = HttpStatus.OK; ResponseEntity<byte[]> response = new ResponseEntity<>(body, headers, statusCode); return response; } ``` 以上是简单的文件上传下载实现方法,具体实现还需要根据具体需求进行调整。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值