12. 开发文件上传下载功能

457 字约 1 分钟读完914 次阅读更新于 2026/5/3

文件上传

private static final String ROOT_PATH = System.getProperty("user.dir") + "/files";

@PostMapping("/upload")
public Result upload(MultipartFile file) throws IOException {
    String originalFilename = file.getOriginalFilename();  // 获取到原始的文件名   aaa.png   aaa.png
    long flag = System.currentTimeMillis();  // 唯一标识
    String fileName = flag + "_" + originalFilename;    //  1561231313132_aaa.png

    File finalFile = new File(ROOT_PATH + "/" + fileName);  // 最终存到磁盘的文件对象
    if (!finalFile.getParentFile().exists()) {  // 如果父级目录不存在 就得创建
        finalFile.getParentFile().mkdirs();
    }
    file.transferTo(finalFile);
    // 返回文件的url
    String url = "http://localhost:9090/files/download?fileName=" + fileName;
    return Result.success();
}

文件下载

@GetMapping("/download")
public void download(String fileName, HttpServletResponse response) throws IOException {
    File file = new File(ROOT_PATH + "/" + fileName);  // 文件在存盘存储的对象
    ServletOutputStream os = response.getOutputStream();
    response.setHeader("Content-Disposition", "attachment;filename=" + URLEncoder.encode(fileName, "UTF-8"));
    response.setContentType("application/octet-stream");
//        os.write(FileUtil.readBytes(file));
    FileUtil.writeToStream(file, os);
    os.flush();
    os.close();
}

Postman 调用
image.png