在文件作为REST请求的响应返回后,处理删除文件的最佳方法是什么?
我有一个endpoint,可以根据请求创建一个文件,并在响应中返回它。一旦发送了响应,该文件就不再需要,可以/应该删除。
@Path("file")
@GET
@Produces({MediaType.APPLICATION_OCTET_STREAM})
@Override
public Response getFile() {
// Create the file
...
// Get the file as a steam for the entity
File file = new File("the_new_file");
ResponseBuilder response = Response.ok((Object) file);
response.header("Content-Disposition", "attachment; filename=\"the_new_file\"");
return response.build();
// Obviously I can't do this but at this point I need to delete the file!
}
我想我可以创建一个tmp文件,但我认为有一个更优雅的机制来实现这一点。该文件可能相当大,因此我无法将其加载到内存中。
我最近用泽西做了类似的事
@GET
@Produces("application/zip")
@Path("/export")
public Response exportRuleSet(@QueryParam("ids") final List<String> ids) {
try {
final File exportFile = serviceClass.method(ruleSetIds);
final InputStream responseStream = new FileInputStream(exportFile);
StreamingOutput output = new StreamingOutput() {
@Override
public void write(OutputStream out) throws IOException, WebApplicationException {
int length;
byte[] buffer = new byte[1024];
while((length = responseStream.read(buffer)) != -1) {
out.write(buffer, 0, length);
}
out.flush();
responseStream.close();
boolean isDeleted = exportFile.delete();
log.info(exportFile.getCanonicalPath()+":File is deleted:"+ isDeleted);
}
};
return Response.ok(output).header("Content-Disposition", "attachment; filename=rulset-" + exportFile.getName()).build();
}
有一个更优雅的解决方案,不写文件,直接写入Response
实例中包含的输出流。
将StreamingOutput用作实体:
final Path path;
...
return Response.ok().entity(new StreamingOutput() {
@Override
public void write(final OutputStream output) throws IOException, WebApplicationException {
try {
Files.copy(path, output);
} finally {
Files.delete(path);
}
}
}
问题内容: 在将文件作为对REST请求的响应返回后,处理删除文件的最佳方法是什么? 我有一个端点,可根据请求创建文件并在响应中返回它。发送响应后,就不再需要该文件,可以/应该将其删除。 我想我可以创建一个tmp文件,但是我本来以为有一种更优雅的机制可以实现这一目标。该文件可能很大,因此我无法将其加载到内存中。 问题答案: 有一个 更优雅的解决方案 ,不写文件,只需直接写入实例中包含的输出流即可。
我构建了一个使用BingAPI下载数据集的代码。当我在终端上运行它时,它返回以下错误: 所以我升级了Numpy,但没有用 那么我该怎么做呢?
问题内容: 通过阅读这些和其他资料,我发现实现我想要的最干净的方法是使用Spring 3.1和可以在mvc-annotation中配置的消息转换器。我更新的spring配置文件是: 服务类与mkyong.com网站上提供的服务类相同,只不过我注释掉了商店名称变量的设置,因此它为null,即 我正在使用的Jacksonjar是jackson-mapper-asl 1.9.0和jackson-core
问题内容: 这个问题已经在这里有了答案 : 如何从异步调用返回响应? (39个答案) 6年前关闭。 我使用原型进行AJAX开发,并使用如下代码: 而且我发现“结果”是一个空字符串。所以,我尝试了这个: 但这也没有用。如何获取responseText供其他方法使用? 问题答案: 请记住,在someFunction完成工作后很久才调用onComplete。您需要做的是将回调函数作为参数传递给somef
问题内容: 我必须向现有表添加唯一约束。很好,除了表已经有数百万行,而且许多行违反了我需要添加的唯一约束。 删除有问题的行的最快方法是什么?我有一条SQL语句,该语句查找重复项并将其删除,但要花很长时间才能运行。有没有其他方法可以解决此问题?也许备份表,然后在添加约束后还原表? 问题答案: 其中一些方法似乎有些复杂,我通常这样做是: 给定table table,要在()上对其进行唯一化,使行保持为
我有一个带有重复ID的熊猫数据框。下面是我的数据框 如何仅删除类型为