您的位置:首页 > 移动开发 > Android开发

Android头像上传和java服务端接收图片。

2016-05-14 14:38 459 查看
笔记。

真的是什么都不知道的状态下,java就学了的最最基本的内容,安卓学的马马虎虎,只能网上找找源码。这个方法可能不是最优的,但是是现在我能弄出来的。。。

在csdn用了超多积分才找到的源码,只有安卓端的内容,并没有服务端。把两端合起来。做个笔记。这个可能还有一个bug,就是图像不会马上就在android显示出来,必须要刷新后才能显示出来。

安卓端的代码。

ByteArrayOutputStream out = new ByteArrayOutputStream();

bitmap.compress(Bitmap.CompressFormat.JPEG, 100, out);// 如果不压缩是100,表示压缩率为0,写30 是压缩率,表示压缩70%;

out.flush();

out.close();

Random r = new Random();

int rannum = (int) (r.nextDouble() * (99999 - 10000 + 1)) + 10000; // 获取随机数

byte[] buffer = out.toByteArray();

byte[] encode = Base64.encode(buffer, Base64.DEFAULT);

String photo = new String(encode);

ImageName = getStringToday() +rannum+ ".jpg";//根据现在时间和随机数将名字保存下来。

RequestParams params = new RequestParams();

params.put("photo", photo);

params.put("ImageName", ImageName);//图片名称

params.put("doc_img_id", ids);

//Toast.makeText(getApplicationContext(), ids, Toast.LENGTH_SHORT).show();

params.put("typename","xuesheng" );

String url = "上传的地址";

AsyncHttpClient client = new AsyncHttpClient();

client.post(url, params, new AsyncHttpResponseHandler() {

@Override

public void onSuccess(int arg0, String arg1) {

// TODO Auto-generated method stub

super.onSuccess(arg0, arg1);

try {

if (arg0 == 200) {

Toast.makeText(Person_detail_control.this, "头像上传成功!", 0)

.show();

//Toast.makeText(MainActivity.this, , 0).show();

} else {

Toast.makeText(Person_detail_control.this,

"网络访问异常,错误码:" + arg0, 0).show();

}

} catch (Exception e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}

@Override

public void onFailure(Throwable arg0, String arg1) {

// TODO Auto-generated method stub

super.onFailure(arg0, arg1);

Toast.makeText(Person_detail_control.this,

"网络访问异常,错误码 > " + arg0, 0).show();

}

});

服务器端接收图片的代码

@Override

public String execute() throws Exception {

String phone=request.getParameter("photo");

String ImageName=request.getParameter("ImageName");

GenerateImage(phone,ImageName);

System.out.println(phone);

return NONE;

}

public static boolean GenerateImage(String imgStr,String ImageName) { // 对字节数组字符串进行Base64解码并生成图片

if (imgStr == null) // 图像数据为空

return false;

BASE64Decoder decoder = new BASE64Decoder();

try {

// Base64解码

byte[] b = decoder.decodeBuffer(imgStr);

for (int i = 0; i < b.length; ++i) {

if (b[i] < 0) {// 调整异常数据

b[i] += 256;

}

}

// 生成jpeg图片

String imgFilePath = "E:\\Program Files\\Workspacessss\\HealthMotherWeb\\WebRoot\\image\\"+ImageName+".jpg";

OutputStream out = new FileOutputStream(imgFilePath);

out.write(b);

out.flush();

out.close();

return true;

} catch (Exception e) {

return false;

}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: