获取 Jersey 3 中的文件资源

Get file resource in a Jersey 3

我是 运行 一个使用 Jersey 的 Web 应用程序。在我的控制器中,我试图在 src/main/resources 文件夹中获取一个文件。

我的文件夹结构是:

我的 gradle 依赖项是:

dependencies {
    implementation group: 'org.glassfish.jersey.containers', name: 'jersey-container-servlet', version: '3.0.2'
    implementation group: 'org.glassfish.jersey.inject', name: 'jersey-hk2', version: '3.0.2'
    implementation group: 'org.glassfish.jersey.media', name: 'jersey-media-moxy', version: '3.0.2'
}

我的代码是:

@GET
@Path(value = "/log/details/{fileId}")
@Produces(MediaType.APPLICATION_JSON)
public List<IngestionLogs> getIngestionLogDetails(@PathParam("fileId") String fileId) {
    List<IngestionLogs> logs = new ArrayList<>();

    try {
        InputStream stream; // how do I get this?
        List<IngestionLogs> errors = TsvFileValidators.parseObject(stream);
        logs.addAll(errors);
    } catch (FileNotFoundException e) {
        e.printStackTrace();
    }
    
    return logs;
}

如何获得此文件的 InputStream

可以通过servletContext.getResourceAsStream

获取
 InputStream is = servletContext.getResourceAsStream("/WEB-INF/test_model.js");

使用 @Context

添加 ServletContext
@Context private ServletContext servletContext;

如果缺少导入 jakarta.servlet.ServletContext 添加到依赖项 jakarta.servlet-api