ssm-文件下载

1、下载

package com.resoft.ssm.controller;
import org.springframework.http.HttpHeaders;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.stereotype.Controller;
import org.springframework.util.MultiValueMap;
import org.springframework.web.bind.annotation.RequestMapping;

import javax.servlet.ServletContext;
import javax.servlet.http.HttpSession;
import java.io.*;

@Controller
public class FileController {

    @RequestMapping("/test/down")
    public ResponseEntity<byte[]> testResponseEntity(HttpSession httpsession) throws IOException {
        //获取servletcontext对象
        ServletContext servletContext = httpsession.getServletContext();
        //获取服务器中文件的真实路径:
        //getRealPath():方法本身用来获取系统的绝对路径
        //getRealPath(""):方法中写文件的路径:相对路径
        //getRealPath():本质上是字符串的拼接
        String realPath = servletContext.getRealPath("img");
        //File.separator : 系统目录中的间隔符
        realPath = realPath + File.separator + "a.png";
        //创建输入流
        InputStream is = new FileInputStream(realPath);
        //创建字节数组:is.available():获取输入流所对应文件的字节数
        byte[] bytes = new byte[is.available()];
        //将流读到字节数组中
        is.read(bytes);

        //创建HttpHeaders对象,设置响应头的信息
        MultiValueMap<String ,String > headers = new HttpHeaders();
        //设置下载方式,以及下载的文件的名字
        //attachent:以附件形式下载
        //filename=1.jpg: 设置下载的名字
        headers.add("Content-Disposition","attachent;filename=1.jpg");

        //设置相应状态码
        HttpStatus httpStatus = HttpStatus.OK;

        ResponseEntity<byte[]> responseEntity = new ResponseEntity<>(bytes,headers,httpStatus);
        //关闭输入流
        is.close();
        return responseEntity;
    }
}

2 上传文件

(1)方法:

@RequestMapping("/test/up")
    public String fileUp(MultipartFile photo,HttpSession httpSession) throws IOException {
        //获取上传的文件的文件名称
        String fileName = photo.getOriginalFilename();
        //获取文件后缀
        String hzName = fileName.substring(fileName.lastIndexOf("."));
        //获取uuid
        String uuid = UUID.randomUUID().toString();
        //拼接一个新的文件名称:uuid + 后缀
        fileName = uuid + hzName;

        //获取系统目录的真实路径
        ServletContext servletContext = httpSession.getServletContext();
        //获取需要上传到的文件夹的位置
        String realPath = servletContext.getRealPath("photo");

        //判断该文件夹是否存在
        //将该文件路径指定为file,如果不存在,就创建该文件夹
        File file = new File(realPath);
        if (!file.exists()){
            //如果不存在,就创建
            file.mkdir();
        }

        //指定上传文件的路径
         String finalPath = realPath + File.separator + fileName;
        //上传文件:将文件上传到指定的路径处
        photo.transferTo(new File(finalPath));
        return "success";
    }

(2)配置文件:

<!--配置文件上传解析器-->
<!--springmvc通过 id 来获取到文件解析器,且 id 固定-->
<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
</bean>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值