返回文件以响应Undertow服务器上的API

时间:2018-10-17 17:38:49

标签: undertow

如何在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(); 
    }

0 个答案:

没有答案