02_学习使用javax_ws_rs_下载文件

文章目录

  • 1 前言
  • 2 Maven 依赖
  • 3 下载接口
  • 4 如何返回文件?
  • 5 感谢

1 前言

  专栏上一篇,写了如何使用 javax.ws.rs 上传文件,那么必然的,我们得再学习学习如何下载文件

2 Maven 依赖

  这个就不赘述了,和上一篇,文件上传的 Maven 依赖一样。

3 下载接口

import javax.ws.rs.*;
import javax.ws.rs.core.MediaType;

@Path("/test")
public interface TestController {
    @GET
    @Path("download")
    @Consumes(MediaType.APPLICATION_FORM_URLENCODED)
    Response download(@QueryParam("paramOne") String paramOne,
                    @QueryParam("paramTwo") String paramTwo);
}

4 如何返回文件?

import org.springframework.util.Assert;
import javax.ws.rs.core.Response;

public class TestService {
    public Response download(String paramOne, String paramTwo) {
        try {
            Assert.hasText(paramOne, "paramOne 不能为空");
            Assert.hasText(paramTwo, "paramTwo 不能为空");

            // 具体的业务逻辑, 产生了个文件
            File file = doSomethingThenGetAFile();
            String fileName = "text测试文件.txt";
            // URL 编码, 因为有中文
            this.urlEncodeFilename(fileName);
            return Response.ok()
                    .entity(file)
                    .header("Content-disposition", "attachment;filename*=utf-8''" + fileName)
                    .header("Content-Type", "text/plain")
                    .encoding("utf-8")
                    .build();
        } catch (Exception e) {
            logger.error("下载文件出现异常", e);
            return Response.ok()
                    .entity(JsonResult.fail(e.getMessage()))
                    .header("Content-Type", "application/json")
                    .encoding("utf-8")
                    .build();
        }
    }

    /**
     * 对 filename 进行 URL 编码
     *
     * @param filename 文件名
     * @return 编码后的文件名
     */
    public String urlEncodeFilename(String filename) {
        try {
            return URLEncoder.encode(filename, StandardCharsets.UTF_8.name());
        } catch (UnsupportedEncodingException e) {
            log.error("对文件名 {}, 进行 URL 编码时, 出现异常 {}", filename, e.getMessage());
            throw new RuntimeException("对文件名 " + filename + ", 进行 URL 编码时, 出现异常", e);
        }
    }
}

5 感谢

  感谢阅读~ 如有错误之处,请帮忙指正~

你可能感兴趣的:(javax_ws_rs,学习,java,javax.ws.rs,jboss,resteasy,下载文件)