下载文件接口 价值100K的代码!

205 阅读1分钟

核心

image.png PS: 游客不配拥有姓名,只配缺省值😂

代码概要

@GetMapping("getFile")
public void getFile(HttpServletRequest request, HttpServletResponse response) throws Exception {
    final ServletOutputStream outputStream = response.getOutputStream();
    final File file = new File("C:\Users\xd\Downloads\android-studio-ide-201.6953283-windows.exe");
    final FileInputStream inputStream = new FileInputStream(file);
    final long fileLen = file.length();

    int off = 0, len = 1024, notRead = 1, available;
    final byte[] bytes = new byte[len];

    final String userLevel = request.getHeader("userLevel");

    response.setHeader(HttpHeaders.CONTENT_DISPOSITION, "attachment; filename=" + file.getName());
    while (notRead >= 1) {
        notRead = inputStream.read(bytes, off, len);
        outputStream.write(bytes);
        available = inputStream.available();
        System.out.println("进度:" + (available * 100L / fileLen) + "%\t剩余:" + available);
        switch (userLevel) {
            case "钻石会员":
                break;
            case "黄金会员":
                Thread.sleep(20);
                break;
            case "会员":
                Thread.sleep(50);
                break;
            default:
                Thread.sleep(200);
        }
    }
    outputStream.flush();
    outputStream.close();
}