使用 jax-rs 发送临时文件

2024-04-16

我正在尝试使用 jax-rs 发送一个临时文件,并在下载完成后删除该临时文件。为此,我对 InputSream 进行了子类化,以便在流关闭后收到通知。这是我到目前为止所拥有的:

@GET
@Path("download/{fileName}")
public Response downloadFile(@PathParam("fileName") String fileName) {
    InputStream inputStream = new InputStreamWithFileDeletion(new getFile(filename));

    Response.ResponseBuilder response = Response.ok((Object) file);
    response.header("Content-Disposition",
            "attachment; filename="+"fileName"+".xls");
    return response.build();
}

带文件删除的输入流:

public class InputStreamWithFileDeletion extends FileInputStream {
    File f;

    public InputStreamWithFileDeletion(File file) throws FileNotFoundException {
        super(file);
        f = file;
    }

    @Override
    public void close() throws IOException {
        super.close();
        f.delete();
    }
}

不幸的是,一旦下载完成,close() 就不会被调用。我错过了什么吗?


Change

Response.ResponseBuilder response = Response.ok((Object) file);

to

Response.ResponseBuilder response = Response.ok(inputStream);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 jax-rs 发送临时文件 的相关文章

随机推荐