web项目中的文件上传与下载

本文总阅读量
本文最后更新于2 分钟前,文中所描述的信息可能已发生改变。

设置上传文件最大大小设置

yml
# application.yml
spring:
  servlet:
    multipart:
      max-file-size: 10MB

文件上传

java
/**
 * 接收从客户端上传的文件并保存在服务器的basePath目录中
 * @param files 客户端上传的文件
 * @throws IOException
 * @Return 上传后的路径
 */
public static List<String> upLoad(MultipartFile[] files) throws IOException {
        List<String> filesPath = new ArrayList<>();
        //遍历上传的文件
        for (MultipartFile file : files) {
            //获取原文件名
            String filename = file.getOriginalFilename();
            //通过文件保存路径创建file对象
            File dest = new File(basePath + filename);
            //保存上传后的文件路径
            filesPath.add(dest.getPath());
            //判断文件路径是否存在,不存在则创建
            if(!dest.getParentFile().exists()){
                dest.getParentFile().mkdirs();
            }
            //将文件转存到目的地,文件不存在则事先创建
            file.transferTo(dest);
        }
        return filesPath;
    }

文件下载

java
/**
 * 客户端下载服务器的文件
 * @param fileName 客户端要下载的文件路径
 * @return
 */
public static void downLoad(String fileName, HttpServletResponse response) throws IOException {
    File file = new File(basePath + fileName);
    if(!file.exists()){
        //文件不存在抛出异常
        throw new FileNotFoundException("文件未找到");
    }
    //清空缓存区
    response.reset();
    //设置响应的内容类型为二进制流
    response.setContentType(MimeTypeUtils.APPLICATION_OCTET_STREAM_VALUE);
    //设置字符编码
    response.setCharacterEncoding(StandardCharsets.UTF_8.displayName());
    //设置响应的内容长度,这是为了告诉客户端要下载的文件的大小
    response.setContentLengthLong(file.length());
    //设置响应头中的 Content-Disposition 属性,告诉浏览器以附件形式下载文件,并指定文件名
    response.setHeader(HttpHeaders.CONTENT_DISPOSITION,"attachment;filename="+fileName);
    //获取输出流
    OutputStream os = response.getOutputStream();
    //封装输入流我高性能的BufferedInputStream
    InputStream fileInputStream = new BufferedInputStream(new FileInputStream(file));
    //每次读取的最大字节数
    byte[] bytes = new byte[1024];
    //实际读取的字节数
    int len;
    while ((len = fileInputStream.read(bytes))>0){
        //循环读取
        os.write(bytes,0,len);
        os.flush();
    }
    //刷新
    //response.flushBuffer();
    fileInputStream.close();
}
在linux下安装配置wordpress
jwt的使用
Valaxy v0.18.5 驱动 | 主题 - Yun v0.18.5
本站总访问量
本站访客数 人次
本站已运行0 天0 小时0 分0 秒后缀