Android编程实现图片的上传和下载功能示例

这篇文章主要介绍了Android编程实现图片的上传和下载功能,涉及Android针对图片的字节流转换与传输操作相关技巧,需要的朋友可以参考下

本文实例讲述了Android编程实现图片的上传和下载功能。分享给大家供大家参考,具体如下:

在实现一个Android的WEB服务客户端,比如微博,论坛客户端时,经常会使用到图片的上传和下载。在这里介绍如何利用HttpClient实现图片的上传和下载功能。

1 图片上传:上传图片时,首先获得图片的路径,创建文件,并将图片转化为字节流写入到request,并发送该请求。

客户端代码:

 File file = new File(imageUrl); String httpUrl = httpDomain+"AddImageServlet"+"?gid="+gid; HttpPost request = new HttpPost(httpUrl); HttpClient httpClient = new DefaultHttpClient(); FileEntity entity = new FileEntity(file,"binary/octet-stream"); HttpResponse response; try { request.setEntity(entity); entity.setContentEncoding("binary/octet-stream"); response = httpClient.execute(request); //如果返回状态为200,获得返回的结果 if(response.getStatusLine().getStatusCode()==HttpStatus.SC_OK){ ……//图片上传成功 } } catch(Exception e){ } 

服务器端所做的工作则是接收该字节流,写入文件中,并在服务器中相应文件夹中保存该文件,并记录该文件的路径,将图片文件路径写入到数据库中保存。

服务器端代码:

 //获得新闻id String gid = request.getParameter("gid"); String filePath = getRealPath(request) + "\\userpic\\"; //   定义上载文件的最大字节 int MAX_SIZE = 102400 * 102400; //   声明文件读入类 DataInputStream in = null; FileOutputStream fileOut = null; //   取得客户端上传的数据类型 String contentType = request.getContentType(); if(contentType.indexOf("binary/octet-stream") >= 0){ //   读入上传的数据 in = new DataInputStream(request.getInputStream()); int formDataLength = request.getContentLength(); // 如果图片过大 if(formDataLength > MAX_SIZE){ String errormsg=("上传的文件字节数不可以超过" + MAX_SIZE); out.println(errormsg); return ; } //   保存上传文件的数据 byte dataBytes[] = new byte[formDataLength]; int byteRead = 0; int totalBytesRead = 0; //   上传的数据保存在byte数组 while(totalBytesRead 

2 图片下载:首先获得网络图片的图片地址,发送请求后,服务器将会返回该图片的字节流,利用BitmapFactory.decodeStream()方法将字节流转化为图片并返回。具体代码如下:

 //获得网络中的图片 public Bitmap getGossipImage(String gid){ String httpUrl = httpDomain+"userpic/"+gid+".png-600"; Bitmap bitmap = null; HttpGet httpRequest = new HttpGet(httpUrl); //取得HttpClient 对象 HttpClient httpclient = new DefaultHttpClient(); try { //请求httpClient ,取得HttpRestponse HttpResponse httpResponse = httpclient.execute(httpRequest); if(httpResponse.getStatusLine().getStatusCode() == HttpStatus.SC_OK){ //取得相关信息 取得HttpEntiy HttpEntity httpEntity = httpResponse.getEntity(); InputStream is = httpEntity.getContent(); bitmap = BitmapFactory.decodeStream(is); is.close(); }else{ Toast.makeText(context, "连接失败!", Toast.LENGTH_SHORT).show(); } } catch (ClientProtocolException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } return bitmap; } 

更多关于Android相关内容感兴趣的读者可查看本站专题:《Android图形与图像处理技巧总结》、《Android开发入门与进阶教程》、《Android调试技巧与常见问题解决方法汇总》、《Android多媒体操作技巧汇总(音频,视频,录音等)》、《Android基本组件用法总结》、《Android视图View技巧总结》、《Android布局layout技巧总结》及《Android控件用法总结

希望本文所述对大家Android程序设计有所帮助。

以上就是Android编程实现图片的上传和下载功能示例的详细内容,更多请关注0133技术站其它相关文章!

赞(0) 打赏
未经允许不得转载:0133技术站首页 » 移动