Android   发布时间:2022-04-28  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了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 @R_140_10586@lBytesRead = 0;
//   上传的数据保存在byte数组
while(@R_140_10586@lBytesRead < formDataLength){
byteRead = in.read(dataBytes,@R_140_10586@lBytesRead,formDataLength);
@R_140_10586@lBytesRead += byteRead;
 }
String filename = filePath + gid+".png";
 //   检查上载文件的目录是否存在
File fileDir = new File(filePath);
if(!fileDir.exists()){
fileDir.mkdirs();
}
//   创建文件的写出类
fiLeout = new FiLeoutputStream(fileName);
//   保存文件的数据
fiLeout.write(dataBytes);
fiLeout.close();
//保存文件的路径名
……

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

//获得网络中的图片
public Bitmap getGossipImage(String gid){
    String httpUrl = httpDomain+"userpic/"+gid+".png";
    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编程实现图片的上传和下载功能示例全部内容,希望文章能够帮你解决Android编程实现图片的上传和下载功能示例所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。