当前位置

网站首页> 程序设计 > 开源项目 > 程序开发 > 浏览文章

Android框架之AsyncHttpClient

作者:小梦 来源: 网络 时间: 2024-03-20 阅读:

原文来自http://www.jianshu.com/p/55337dfd311b

今天利用AsyncHttpClient框架实现将图片上传到服务器。

步骤和思路很简单主要分为三步:

  1. 将图片bitmap进行base64编码;

  2. 将编码后的String通过AsyncHttpClient上传给服务器的php;

  3. php中将获取的String利用base64解码保存到服务器;

其中android端Java代码如下:

/*** 将图片上传到服务器* @param bt* 将拿到的bitmap进行base64编码* 利用AsyncHttpClient框架将编码后的字符传递上去* 在服务器php中接收,并保存在服务器中*/private void sendImage(Bitmap bt){ByteArrayOutputStream stream = new ByteArrayOutputStream();/*** 压缩图片* 第一个参数指定bitmap格式* 第二个参数压缩的比例* 第三个参数是输出流*/bt.compress(Bitmap.CompressFormat.JPEG, 60, stream);byte[] bytes = stream.toByteArray();//将bitmap进行Base64编码String img = new String(Base64.encode(bytes, Base64.DEFAULT));AsyncHttpClient cilent = new AsyncHttpClient();RequestParams params = new RequestParams();params.add("img", img);params.add("userName", userName);//这里由于需要,多传入了一个参数,读者可以忽略System.out.println("params"+params.toString());cilent.post(sendImageUrl, params, new AsyncHttpResponseHandler() {/*** 上传成功调用函数*/@Overridepublic void onSuccess(int arg0, Header[] arg1, byte[] arg2) {// TODO Auto-generated method stubToast.makeText(PersonalMessage.this, "上传成功", 1).show();}/*** 上传失败调用函数*/@Overridepublic void onFailure(int arg0, Header[] arg1, byte[] arg2, Throwable arg3) {// TODO Auto-generated method stubToast.makeText(PersonalMessage.this, "上传失败", 1).show();}});}

服务器端php代码:

<?php$filename = "images/".$_POST['userName'];$file = fopen($filename.".jpg","w");$date = base64_decode($_POST['img']);fwrite($file,$date);fclose($file);?>

这样就OK了!

热点阅读

网友最爱