RESTful 生成二进制文件
我是新使用 CXF 和 Spring 来制作 RESTful Web 服务。
这是我的问题:我想创建一个生成“任何”类型的文件(可以是图像、文档、txt 甚至 pdf)以及 XML 的服务。到目前为止,我得到了这段代码:
@Path("/download/")
@GET
@Produces({"application/*"})
public CustomXML getFile() throws Exception;
我不知道到底从哪里开始,所以请耐心等待。
编辑:
Bryant Luk 的完整代码(谢谢!)
@Path("/download/")
@GET
public javax.ws.rs.core.Response getFile() throws Exception {
if (/* want the pdf file */) {
File file = new File("...");
return Response.ok(file, MediaType.APPLICATION_OCTET_STREAM)
.header("content-disposition", "attachment; filename =" + file.getName())
.build();
}
/* default to xml file */
return Response.ok(new FileInputStream("custom.xml")).type("application/xml").build();
}
I'm new using CXF and Spring to make RESTful webservices.
This is my problem: I want to create a service that produces "any" kind of file(can be image,document,txt or even pdf), and also a XML. So far I got this code:
@Path("/download/")
@GET
@Produces({"application/*"})
public CustomXML getFile() throws Exception;
I don't know exactly where to begin so please be patient.
EDIT:
Complete code of Bryant Luk(thanks!)
@Path("/download/")
@GET
public javax.ws.rs.core.Response getFile() throws Exception {
if (/* want the pdf file */) {
File file = new File("...");
return Response.ok(file, MediaType.APPLICATION_OCTET_STREAM)
.header("content-disposition", "attachment; filename =" + file.getName())
.build();
}
/* default to xml file */
return Response.ok(new FileInputStream("custom.xml")).type("application/xml").build();
}
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
如果它将返回任何文件,您可能希望使您的方法更加“通用”并返回 javax.ws.rs.core.Response ,您可以通过编程方式设置 Content-Type 标头:
If it will return any file, you might want to make your method more "generic" and return a javax.ws.rs.core.Response which you can set the Content-Type header programmatically:
我们还使用 CXF 和 Spring,这是我更喜欢的 API。
We also use CXF and Spring, and this is my preferable API.