2017-03-07 85 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);