前言:一直想写段代码实现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

更多相关文章

  1. Netty学习心得 netty服务端和客户端的连接
  2. 一个非常不错的纯源码“PDF转换swf”完全脱离安装第三方插件,直接
  3. socket实现客户端与服务端通信(一)服务端
  4. 如果服务器位于不同的位置,如何保存客户端机器时间
  5. Java怎么实现保存页面内容 导出为图片到本地
  6. java远程类加载与轻客户端
  7. 【笔记】上传图片和音频
  8. java后台对上传的图片进行压缩

随机推荐

  1. php优化方法
  2. php中变量赋值的方式
  3. 方便实用的PHP数据库操作类
  4. php数组实现原理
  5. php函数原理
  6. php中if函数用法
  7. php网站开发步骤
  8. php引入文件的四个方法
  9. php语言的发展历史
  10. 关于PHP中异常错误的处理详细介绍