如何在Undertow服务器上响应API发送文件?一旦调用此API,它应读取该文件并在该API的响应中返回它。 例如。我们可以获取放置在本地文件系统上的任何文件。
下面是我定义了处理程序的代码片段,该处理程序尝试使用undertow的sender接口读取文件并将其放入响应中,但是它无法正常工作:-
public void handleRequest(HttpServerExchange exchange) throws Exception {
try {
FileInputStream input = new FileInputStream("C:\\Users\\GUR52484\\Desktop\\cdaiLog.txt");
exchange.getResponseHeaders().add(new HttpString("Content-Type"), "application/octet-stream");
System.out.println("Length of byte array is: "+toByteArrayUsingJava(input).length);
exchange.getResponseSender().send(ByteBuffer.wrap(toByteArrayUsingJava(input)));
input.close();
}catch(Exception ex) {
System.out.println(ex.getMessage());
}
// exchange.getResponseHeaders().add(new HttpString("Content-Type"), "application/json");
// exchange.getResponseSender().send("{\"execResult\":\"0\"}");
}
private byte[] toByteArrayUsingJava(InputStream is) throws IOException{
ByteArrayOutputStream baos = new ByteArrayOutputStream();
int reads = is.read();
while(reads != -1){
baos.write(reads);
reads = is.read();
}
return baos.toByteArray();
}