2013-07-02 2 views
0
public class QRCodeServlet extends HttpServlet { 

    protected void processRequest(HttpServletRequest request, HttpServletResponse response) 
      throws ServletException, IOException { 
     try { 
      String qrtext = request.getParameter("qrtext"); 
      ByteArrayOutputStream out = QRCode.from(qrtext).to(ImageType.PNG).stream(); 

      response.setContentType("image/png"); 
      response.setContentLength(out.size()); 

      OutputStream outStream = response.getOutputStream();   
      outStream.write(out.toByteArray()); 
      outStream.flush(); 
      outStream.close(); 
     } catch (Exception ex) { 
      ex.printStackTrace(); 
     } 
    } 

    @Override 
    protected void doGet(HttpServletRequest request, HttpServletResponse response) 
      throws ServletException, IOException { 
     processRequest(request, response); 
    } 

    @Override 
    protected void doPost(HttpServletRequest request, HttpServletResponse response) 
      throws ServletException, IOException { 
     processRequest(request, response); 
    } 

    @Override 
    public String getServletInfo() { 
     return "Short description"; 
    }// </editor-fold> 
} 

Вот код, который я использую для генерации QRCode. Я использовал outputStream для отображения QRCode в браузере. Но как я могу сохранить этот QRCode в качестве файла изображения на сервере и использовать тег, чтобы выложить его в другой файл html? Я использовал iText lib для создания QrCode здесь.Как сохранить файл изображения QRCode, который я только что создал на сервере?

ответ

1

If save является необязательным, но отображение необходимо в файле HTML (на самом деле JSP) ... Как насчет следующего?

Если есть параметр txt в запросе:

<% var txt = request.getParameter("txt"); %> 
<img src="/context/servletMapping?qrtext=<%=java.net.URLEncoder(txt, "UTF-8")%>"> 

С JSTL см How to URL-encode a String with JSTL?

0

Просто используйте FileOutputStream для записи содержимого вашего ByteArrayOutputStream. Точно так же вы написали этот контент в выходной поток ответа. Запишите файл в какое-либо место, доступное через HTTP (например, корень документа установки apache и т. Д.), И вы можете ссылаться на него из HTML.

Другой подход можно попробовать было бы встраивать изображения непосредственно в HTML-коде (новые браузеры поддерживают это через URIs данных)

пример
0

код, чтобы сохранить изображение ByteArrayOutputStream

String imageDir = //directory to save 
String fileName = //file name 
ByteArrayOutputStream out = //image byte arary 
File file = new File(imageDir, fileName); 
OutputStream outStream = new FileOutputStream(newFile); 
outStream.write(out.toByteArray()); 
outStream.close(); 
Смежные вопросы