2017-03-07 44 views
0

我正在使用RestExpress创建我的REST API。我有一种情况,我应该在响应中返回一个PDF文件,以便最终用户能够下载它。 我知道这可以通过Servlets来实现,但RestExpress有它自己的Response对象,并且它没有支持response.getOutputStream()函数。如何使用RestExpress Response对象实现此功能?在RestExpress响应中返回文件

回答

1

我能够使用Unpooled Netty缓冲区实现此功能。如果您使用的是Netty 3.10或更高版本,则可能需要使用ChannelBuffers而不是Pool类。在Netty 4.0/4.1中,ChannelBuffers已被Unpooled取代。

下面是示例代码:

import io.netty.buffer.Unpooled; 
import java.nio.file.Files; 
import java.nio.file.Paths; 

response.setContentType("application/pdf"); //Setting content type to be pdf 
response.addHeader("Content-disposition", "attachment; filename=" + outputFileAddress); 
LOG.info(outputFileAddress);  
java.nio.file.Path path = Paths.get(outputFileAddress); 
byte[] data = Files.readAllBytes(path); 
response.setBody(Unpooled.wrappedBuffer(data)); 
response.noSerialization(); // No serialization avoids getting the stream to Jackson 
response.setResponseStatus(HttpResponseStatus.OK);