0
我正在使用RestExpress創建我的REST API。我有一種情況,我應該在響應中返回一個PDF文件,以便最終用戶能夠下載它。 我知道這可以通過Servlets來實現,但RestExpress有它自己的Response對象,並且它沒有支持response.getOutputStream()函數。如何使用RestExpress Response對象實現此功能?在RestExpress響應中返回文件
我正在使用RestExpress創建我的REST API。我有一種情況,我應該在響應中返回一個PDF文件,以便最終用戶能夠下載它。 我知道這可以通過Servlets來實現,但RestExpress有它自己的Response對象,並且它沒有支持response.getOutputStream()函數。如何使用RestExpress Response對象實現此功能?在RestExpress響應中返回文件
我能夠使用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);