JavaWeb-1-IOS或Android客户端上传图片到Java服务端存到数据库,再从数据库取出下载下来的过程

前言:一直想写段代码实现IOS或Android客户端上传图片到Java服务端存到数据库,再从数据库取出下载下来的过程,今天终于忍不住将代码吐了出来,这里仅提供了Javaweb端servlet的响应代码。我觉得客户端用base64转换图片比较简单就在此没有提供,如果需要,留言即可,天天在线。

推荐李刚疯狂系列丛书:http://download.csdn.net/detail/iot_li/9188759
李刚疯狂swift源代码:
http://download.csdn.net/detail/iot_li/9188767

准备:IOS或Android客户端经过base64编码的图片发到服务端。(一定是POST请求才行)

服务端接收并存储图片代码:

public void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        //以下代码在测试iOS端上传图片时用的
        /*********************IOS上传头像图片----start*****************************/
        System.out.println("POST登录请求");
        response.setContentType("text/html");
        PrintWriter out = response.getWriter();
        UserDao dao = new UserDaoImpl();
        // 取出用户名、密码
        String username = request.getParameter("account");
        String password = request.getParameter("password");


        //接收网络图片
        file=request.getParameter("image_ios");  
        if(file!=null){  
            System.out.println("开始处理客户端的图片");  
            byte[] b= Base64.decodeBase64(file);//系统里的Base64---对客户端base64编码的图片进行解析为字节
            //定义图片的存放路径
            String filepath=request.getSession().getServletContext().getRealPath("/WebContent/WEB-INF/");  
            File file2=new File(filepath);
            //如果文件路径不存在就会建立这个目录
            if(!file2.exists())  
                file2.mkdirs();  
            //在创建输出流时给图片重命名
            int  imageId=(int)(Math.random()*100);
            FileOutputStream fos=new FileOutputStream(file2.getPath()+"/person_head"+imageId+".png");  
            System.out.println(file2.getPath()); 
            //要存储到数据库里的图片路径
            String headImage_Path = "/WebContent/WEB-INF/"+("person_head"+imageId+".png");
            // 获得DAO接口
            HeadimageDao dao2 = new HeadimageDaoImpl();
            // 实例化头像图片类
            Headimage H = new Headimage();
            // 设置头像图片属性
            H.setHeadImage_str(headImage_Path);//Integer.parseInt(register_user_pwd));
            //将路径数据保存到数据库
            dao2.saveHeadimageInfo(H);
            fos.write(b);  
            fos.flush();  
            fos.close();  
        }

服务端通过数据库里图片的路径取出图片代码:

//请求后客户端会将图片下载下来。
        //在数据库取头像
        System.out.print("HeadimageDaoImpl获取头像图片");
        ServletOutputStream sout=response.getOutputStream();
        // 添加SQL语句
        String sql = "select headimage from usertbl where account ="+"'lot'";
        // 数据库连接工具类
        DBUtil util = new DBUtil();
        try {
            System.out.print("HeadimageDaoImpl获取头像图片4");
            // 获得连接
            Connection conn = util.openConnection();
            Statement stmt=conn.createStatement();
            ResultSet rs=stmt.executeQuery(sql);
            InputStream in=null;

            if(rs.next())
            {     
                //查询数据库相应地字段
                in=rs.getBinaryStream("headimage"); 
                byte image[]=new byte[1024];
                while(in.read(image)!=-1)
                {
                    sout.write(image);
                } 
                sout.flush();   
                //sout.close();
                rs.close();
                stmt.close();
                conn.close();
                util.closeConn(conn);
                System.out.print("获取图片成功2");
            }
        } catch (SQLException e) {
            e.printStackTrace();
            sout.println("图片不能显示.<br>");
            sout.println("Error : " + e.toString());
        } finally {
//          util.closeConn(conn);
        }

参考资源:
1.上传图片 客户端与 服务端 方案总结
http://blog.csdn.net/user_define_race/article/details/41693301
2.从数据库读出图片:http://blog.csdn.net/lijunlinlijunlin/article/details/40135877

评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

IOT_Elon

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值