我正在玩泽西岛,想知道应该如何实现“下载”功能。例如,假设我在/files/
下有一些资源,我想通过GET
“下载”我应该怎么做?我已经知道GET
,PUT
,POST
,DELETE
的正确注释和实现,但我不太确定在这种情况下如何处理二进制数据。有人可以指出我正确的方向,或者向我展示一个简单的实现?我看过jersey-samples-1.4
,但我似乎无法找到我要找的东西。
非常感谢!
答案 0 :(得分:1)
您应该使用@Produces批注指定哪个媒体类型文件(pdf,zip等)。可以在here找到此批注的Java规范。
您的服务器应该返回创建的文件。例如,在核心java中,您可以执行以下操作:
@GET
@Produces(MediaType.APPLICATION_OCTET_STREAM)
@Path("path")
public StreamingOutput getFile() {
return new StreamingOutput() {
public void write(OutputStream out) throws IOException, WebApplicationException {
try {
FileInputStream in = new FileInputStream(my_file);
byte[] buffer = new byte[4096];
int length;
while ((length = in.read(buffer)) > 0){
out.write(buffer, 0, length);
}
in.close();
} catch (Exception e) {
throw new WebApplicationException(e);
}
}
};
}