2016-11-04 3 views
0

Я хочу преобразовать изображение в byte[] и отправить его через сервлет. Я преобразовал изображение в byte[], но отправить его клиенту ??Как отправить байт [] через сервлет java

protected void doGet(HttpServletRequest request, HttpServletResponse response) 
    throws ServletException, IOException { 

    String name=request.getParameter("name"); 
    File f = new File("/Users/shilu/MyProject/Chat/Photo/" + name); 
    byte[] data = Files.readAllBytes(f.toPath()); 
    //What to do now?? 
} 
+0

какой образ? png, jpg ...? –

ответ

1

Это зависит от типа изображения, как вам нужно указать content type, который соответствует с вашим типом изображения.

Так вот если предположить, что вы хотите отправить png, код может быть что-то вроде этого:

// Set the media type matching with my image 
response.setContentType("image/png"); 
// Write the data 
try (OutputStream out = response.getOutputStream()) { 
    out.write(data); 
} 
+1

'flush()' необязательно, так как неявное 'close()' также будет выполнять флеш. – Kayaman

+0

@ Kayaman Мне было интересно, нужно ли это или нет, я не вижу этого в документе [OutputStream # close()] (https://docs.oracle.com/javase/8/docs/api/ java/io/OutputStream.html # close--), что это обязательно будет кратковременно закрыто, даже если по опыту я знаю, что это произойдет, это может быть конкретная реализация, не согласны ли вы? –

+1

Я бы не решался сказать, что это конкретная реализация. Я бы сказал, что плохо спроектированный поток будет отбрасывать байты вместо их очистки, но 'OutputStream' не указывает никакого поведения. Однако 'FilterOutputStream', который по существу является суперклассом всех пользовательских' OutputStreams', полностью закрывается и указывает, что он делает это. Я бы не стал писать чрезмерный код в таких случаях, как YMMV. – Kayaman

Смежные вопросы