• 服务器通过IO流响应图片数据


    在上一篇文章里,介绍了Android客户端如何通过IO流(http://blog.csdn.net/ceovip/article/details/79100368),从服务器获取图片数据。这里的服务器端测试代码比较简单,示例如下:

    package com.li.downloadtest;
    
    import java.io.BufferedReader;
    import java.io.FileInputStream;
    import java.io.IOException;
    import java.io.InputStreamReader;
    import java.io.OutputStream;
    import java.io.PrintWriter;
    
    import javax.servlet.ServletException;
    import javax.servlet.ServletInputStream;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    
    
    public class DownloadServlet extends HttpServlet {
    
        /**
         * The doGet method of the servlet. <br>
         *
         * This method is called when a form has its tag value method equals to get.
         * 
         * @param request the request send by the client to the server
         * @param response the response send by the server to the client
         * @throws ServletException if an error occurred
         * @throws IOException if an error occurred
         */
        public void doGet(HttpServletRequest request, HttpServletResponse response)
                throws ServletException, IOException {
    
            doPost(request, response);
        }
    
        /**
         * The doPost method of the servlet. <br>
         *
         * This method is called when a form has its tag value method equals to post.
         * 
         * @param request the request send by the client to the server
         * @param response the response send by the server to the client
         * @throws ServletException if an error occurred
         * @throws IOException if an error occurred
         */
        @SuppressWarnings("static-access")
        public void doPost(HttpServletRequest request, HttpServletResponse response)
                throws ServletException, IOException {
    
            //读取输入流数据
            ServletInputStream is = request.getInputStream();
            BufferedReader bufRd = new BufferedReader(new InputStreamReader(is, "UTF-8"));
    
            StringBuffer strBuf = new StringBuffer();
            String strContent = new String("");
            while((strContent = bufRd.readLine()) != null){
                strBuf.append(strContent);
            }
            //获取请求参数
            String jsStr = strBuf.toString();
            System.out.println("param--->" + jsStr);
    
            //输出图片数据
            try {
                response.setContentType("image/jpeg;charset=UTF-8");
                OutputStream out = response.getOutputStream();
    
                String imgUrl = "C:\Users\lish\Desktop\test.jpg";
                FileInputStream fis = new FileInputStream(imgUrl);
    
                int len = -1;
                byte[] data = new byte[1024];  
    
                while((len = fis.read(data)) != -1){
                    out.write(data, 0 , len);
                }
    
                fis.close();
                out.close();
    
            } catch (Exception e) {
    
                PrintWriter writer = response.getWriter(); 
                response.setContentType("text/html;charset=UTF-8"); 
                writer.write("无法打开图片!"); 
                writer.close(); 
            }
        }
    }
    
  • 相关阅读:
    java 学习帮助
    权限
    ftp mybatis
    注解
    hadoop english
    userDao
    发布订阅模式 和委托
    webservice
    rabbitMq视频教程
    blog url.txt
  • 原文地址:https://www.cnblogs.com/lishbo/p/9956017.html
Copyright © 2020-2023  润新知