基于spring的文件上传下载

package com.zsf.util;

import org.apache.commons.io.FileUtils;
import org.springframework.http.HttpHeaders;
import org.springframework.http.HttpStatus;
import org.springframework.http.MediaType;
import org.springframework.http.ResponseEntity;
import org.springframework.web.multipart.MultipartFile;

import javax.servlet.http.HttpServletRequest;
import java.io.File;
import java.io.IOException;

public class FileLoadUtil{

    /**
     * 图片上传
     * @param request
     * @param file
     */
    public static String upload(HttpServletRequest request, MultipartFile file){

        //重新定义文件名防止重名被替换
        String fileName = UUIDUtil.createUUID();
        //获取文件上传的路径
        String path = request.getServletContext().getRealPath("/images");

        //如果上传目录不存在,则创建出来
        File dir = new File(path);
        if(!dir.exists()){
            dir.mkdir();
        }
        //获取上传的文件名(也可以自定义)
        //String fileName = file.getOriginalFilename();
        //构建一个完整文件信息(路径 + 文件名)
        File fileMessage = new File(dir.getAbsolutePath() + "/" + fileName);
        try {
            //执行上传,只需要调用transferTo方法即可
            file.transferTo(fileMessage);
            //将文件名放入model中
//            model.addAttribute("fileName", fileName);
        } catch (IOException e) {
            e.printStackTrace();
            throw new RuntimeException("上传图片失败");
        }
        return fileName;
    }

    /**
     * 图片下载
     * @param fileName
     * @param request
     * @return
     */
    public static ResponseEntity<byte[]> downLoad(String fileName,HttpServletRequest request){
        //获取下载路径
        String path = request.getServletContext().getRealPath("/images");
        //构建下载文件
        File file = new File(path + "/" + fileName);
        //创建HttpHeaders设置响应头信息
        HttpHeaders headers = new HttpHeaders();
        try {
            //设置在响应头中的文件名称,这里进行重新编码,防止中文乱码
            String headerFileName = new String(fileName.getBytes("UTF-8"), "ISO-8859-1");
            //设置内容以附件的方式下载
            headers.setContentDispositionFormData("attachment", headerFileName);
            //设置相应类型为application/octet-stream
            headers.setContentType(MediaType.APPLICATION_OCTET_STREAM);
            //创建ResponseEntity对象
            ResponseEntity<byte[]> entity = new ResponseEntity<>(FileUtils.readFileToByteArray(file), headers, HttpStatus.CREATED);
            return entity;
        } catch (Exception e) {
            e.printStackTrace();
            throw new RuntimeException("文件下载失败");
        }
    }
}
fileLoad

猜你喜欢

转载自www.cnblogs.com/MyReM/p/9019064.html