一.android需要导入异步请求的jar包 AsyncHttpClient 

public static void reg(final Context cont,Bitmap photodata,String regData) {
try {
ByteArrayOutputStream baos = new ByteArrayOutputStream(); //将bitmap一字节流输出 Bitmap.CompressFormat.PNG 压缩格式,100:压缩率,baos:字节流
photodata.compress(Bitmap.CompressFormat.PNG, 100, baos);
baos.close();
byte[] buffer = baos.toByteArray();//将图片的字节流数据加密成base64字符输出
String photo = Base64.encodeToString(buffer, 0, buffer.length,Base64.DEFAULT); //photo=URLEncoder.encode(photo,"UTF-8");
RequestParams params = new RequestParams();
params.put("photo", photo);
params.put("name", "woshishishi");//传输的字符数据
String url = "http://10.0.2.2:8080/IC_Server/servlet/RegisterServlet1";
AsyncHttpClient client = new AsyncHttpClient();
client.post(url, params, new AsyncHttpResponseHandler() {
@Override
public void onSuccess(int statusCode, String content){
Toast.makeText(cont, "头像上传成功!"+content, 0)
.show();
}
@Override
public void onFailure(Throwable e, String data){
Toast.makeText(cont, "头像上传失败!", 0)
.show();
}
}); } catch (Exception e) {
e.printStackTrace();
} } 二.服务器的代码(用的是springmvc)
@RequestMapping("/post")
public void post(HttpServletResponse response , Post post
//,MultipartFile image
,String image
)throws IOException{
Receipt receipt = new Receipt();
try {
/*// 二进制流 上传图片
if(image!=null && image.getOriginalFilename()!=null && image.getOriginalFilename().length()>0){
//原始名称
String originalFilename = image.getOriginalFilename();
//新的图片名称
String newFileName = UUID.randomUUID() + originalFilename.substring(originalFilename.lastIndexOf("."));
String saveName = ImageUtil.findFilePathByFileName(newFileName);
System.out.println("O______________________________________K");
//新图片
File newFile = new File(saveName);
if(!newFile.exists()){
newFile.mkdir();
}
//将内存中的数据写入磁盘
image.transferTo(newFile);
System.out.println("O______________________________________");
//将新图片名称写到itemsCustom中
post.setImg(newFileName);
}else {
post.setImg("");
}*/ // ================================= 字符串接收文件
if(image!=null && image.length()>0){ byte[] photoimg = new BASE64Decoder().decodeBuffer(image);
for (int i = 0; i < photoimg.length; ++i) {
if (photoimg[i] < 0) {
// 调整异常数据
photoimg[i] += 256;
}
}
String newFileName = UUID.randomUUID() + ".png";
String saveName = ImageUtil.findFilePathByFileName(newFileName);
File newFile = new File(saveName);
if(!newFile.exists()){
newFile.createNewFile();
}
FileOutputStream out = new FileOutputStream(newFile);
out.write(photoimg);
out.flush();
out.close();
post.setImg(newFileName);
logger.debug("文件接收成功");
}else {
post.setImg("");
}

三.工具类

public static String rootPathString = "WebRoot/WEB-INF/upload";

    public static String findFilePathByFileName(String fileName) {
if(fileName == null || fileName.trim().isEmpty()){
return "/default.png";
}
int hashcode = fileName.hashCode();
int dir1 = hashcode&0xf; //0--15
int dir2 = (hashcode&0xf0)>>4; //0-15
String dir = rootPathString + "/" + dir1 + "/" + dir2; //upload\2\3 upload\3\5
File file = new File(dir);
if(!file.exists()){
//创建目录
file.mkdirs();
}
return dir+"/"+fileName;
}

ncHttpClient

Android上传图片到服务器的更多相关文章

  1. Android 上传图片到服务器二--------调用相机7.0以上权限问题

    [目录] (一)上传图片到服务器一 ---------------------------------Android代码 (二)上传图片到服务器二--------------------------- ...

  2. Android 上传图片到服务器 okhttp一

    [目录] (一)上传图片到服务器一 ---------------------------------Android代码 (二)上传图片到服务器二--------------------------- ...

  3. android 上传图片到服务器Tomcat(Struts2)

    在做android开发的时候,有时你会用到图片的上传功能,在我的android项目中,我是选中图片,点击上传多张图片 android客户端上传图片部分的代码如下: package com.exampl ...

  4. android上传图片至服务器

    本实例实现了android上传手机图片至服务器,服务器进行保存 服务器servlet代码publicvoid doPost(HttpServletRequest request, HttpServle ...

  5. Android上传图片到服务器,服务端利用.NET WCFRest服务读取文件的解决方案

    在项目中遇到要将Android设备拍摄的照片上传的服务器,将文件保存在服务器本地的文件夹中,数据库中保存的是图片文件名.整个上传是将图片生成二进制流通过HTTP请求上传到服务端,服务端是基于.NET环 ...

  6. 通过android 客户端上传图片到服务器

    昨天,(在我的上一篇博客中)写了通过浏览器上传图片到服务器(php),今天将这个功能付诸实践.(还完善了服务端的代码) 不试不知道,原来通过android 向服务端发送图片还真是挺麻烦的一件事. 上传 ...

  7. Android客户端与服务器

    就是普通的服务器端编程,还不用写界面,其实还比服务器编程简单一些.跟J2EE一样的服务器,你android这一方面只要用json或者gson直接拿数据,后台的话用tomcat接受请求操作数据,功能不复 ...

  8. 【Android】与服务器实现JSON数据通信

    一.前言 作为一名移动端开发人员,具备一定的服务端开发能力也是非常必要的,本篇博客讲述如何在Android和服务器之间实现JSON数据通信交互,博客内容基于另外一篇博客:[Web]Eclipse + ...

  9. Wcf for wp8 上传图片到服务器,将图片名字插入数据库字段(五)

    环境:.NET Framework 3.5 服务: IIS EXpress托管 WCF服务程序 配置:Web.config <!--<connectionStrings> <a ...

随机推荐

  1. jsessionid 导致重定向404的问题

    http://tomcat.apache.org/tomcat-5.5-doc/servletapi/javax/servlet/http/HttpServletResponse.html#encod ...

  2. 16101301(MaterialLOD QualitySwitch)

    [目标] MaterialLOD QualitySwitch [思路] 1 QualitySwitch UE4有三挡 UE3 2 现在UE3需要添加三挡 3 UE3 class UMaterialEx ...

  3. N 皇后问题

    #include <set> #include <iostream> #include <string> #include <vector> #incl ...

  4. mysql sql语句大全

    1.说明:创建数据库 CREATE DATABASE database-name 2.说明:删除数据库 drop database dbname 3.说明:备份sql server --- 创建 备份 ...

  5. JAVA动手动脑

    1.运行 TestInherits.java 示例,观察输出,注意总结父类与子类之间构造方法的调用关系修改Parent构造方法的代码,显式调用GrandParent的另一个构造函数,注意这句调用代码是 ...

  6. 自定义带动画的Toast

    一.style样式: 1.  // 移动和透明渐变结合的动画 <style name="anim_view">        <item name="@ ...

  7. 获取当前时间UTC时间的下一个15分钟时间点

    ZonedDateTime zdt = ZonedDateTime.now(ZoneOffset.UTC); int now15Minute = zdt.getMinute() / P15MINUTE ...

  8. (转载)jQuery 1.6 源码学习(二)——core.js[2]之extend&ready方法

    上次分析了extend方法的实现,而紧接着extend方法后面调用了jQuery.extend()方法(core.js 359行),今天来看看究竟core.js里为jQuery对象扩展了哪些静态方法. ...

  9. activeMq 消费者整合spring

    package com.mq.consumer; import javax.jms.JMSException;import javax.jms.Message;import javax.jms.Mes ...

  10. 白皮 Chapter 1

    6.29 今天主要做了一些1.5中的小结和练习,果然换语言思路也要跟着变么…各种不爽啊不爽… scanf各种忘记&,还有各种忘记return 0… average temperature su ...