gpt4 book ai didi

java - 如何通过 StreamingOutput 下载 CSV 文件

转载 作者:太空宇宙 更新时间:2023-11-04 11:24:34 28 4
gpt4 key购买 nike

我们如何使用来自 AngularJS 的 get 请求来下载文件,并使用 REST API 到 Java 作为中间层,并且在 Java 层,数据根据 API 中的查询参数作为输入流。请帮忙 流程如下:

       request From angular controller -------get/api?name=xyz --- java --- 
query to database for InputStream = "name=xyz using http client";
response is in csv format itself.
Response need to be downloaded into a file

最佳答案

下面是使用 StreamingOutput 类使用 JAX-RS Jersey 编写流式 REST API 的源代码。

import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Paths;

import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.WebApplicationException;
import javax.ws.rs.core.MediaType;
import javax.ws.rs.core.Response;
import javax.ws.rs.core.StreamingOutput;

@Path("/download")
public class JerseyService
{
@GET
@Path("/pdf")
public Response downloadPdfFile()
{
StreamingOutput fileStream = new StreamingOutput()
{
@Override
public void write(java.io.OutputStream output) throws IOException, WebApplicationException
{
try
{
java.nio.file.Path path = Paths.get("C:/temp/test.pdf");
byte[] data = Files.readAllBytes(path);
output.write(data);
output.flush();
}
catch (Exception e)
{
throw new WebApplicationException("File Not Found !!");
}
}
};
return Response
.ok(fileStream, MediaType.APPLICATION_OCTET_STREAM)
.header("content-disposition","attachment; filename = myfile.pdf")
.build();
}
}

注意:如果您点击该 URL,浏览器中将会显示下载该文件的警告。保存 PDF 文件的文件名将是您在 Response.header() 方法中设置的名称。

关于java - 如何通过 StreamingOutput 下载 CSV 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44520887/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com