Android上传图片到服务器
一.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上传图片到服务器的更多相关文章
- Android 上传图片到服务器二--------调用相机7.0以上权限问题
[目录] (一)上传图片到服务器一 ---------------------------------Android代码 (二)上传图片到服务器二--------------------------- ...
- Android 上传图片到服务器 okhttp一
[目录] (一)上传图片到服务器一 ---------------------------------Android代码 (二)上传图片到服务器二--------------------------- ...
- android 上传图片到服务器Tomcat(Struts2)
在做android开发的时候,有时你会用到图片的上传功能,在我的android项目中,我是选中图片,点击上传多张图片 android客户端上传图片部分的代码如下: package com.exampl ...
- android上传图片至服务器
本实例实现了android上传手机图片至服务器,服务器进行保存 服务器servlet代码publicvoid doPost(HttpServletRequest request, HttpServle ...
- Android上传图片到服务器,服务端利用.NET WCFRest服务读取文件的解决方案
在项目中遇到要将Android设备拍摄的照片上传的服务器,将文件保存在服务器本地的文件夹中,数据库中保存的是图片文件名.整个上传是将图片生成二进制流通过HTTP请求上传到服务端,服务端是基于.NET环 ...
- 通过android 客户端上传图片到服务器
昨天,(在我的上一篇博客中)写了通过浏览器上传图片到服务器(php),今天将这个功能付诸实践.(还完善了服务端的代码) 不试不知道,原来通过android 向服务端发送图片还真是挺麻烦的一件事. 上传 ...
- Android客户端与服务器
就是普通的服务器端编程,还不用写界面,其实还比服务器编程简单一些.跟J2EE一样的服务器,你android这一方面只要用json或者gson直接拿数据,后台的话用tomcat接受请求操作数据,功能不复 ...
- 【Android】与服务器实现JSON数据通信
一.前言 作为一名移动端开发人员,具备一定的服务端开发能力也是非常必要的,本篇博客讲述如何在Android和服务器之间实现JSON数据通信交互,博客内容基于另外一篇博客:[Web]Eclipse + ...
- Wcf for wp8 上传图片到服务器,将图片名字插入数据库字段(五)
环境:.NET Framework 3.5 服务: IIS EXpress托管 WCF服务程序 配置:Web.config <!--<connectionStrings> <a ...
随机推荐
- 解决因为使用了官方xbean-2.4.0.jar 的库造成的性能问题
最近我们游戏经常收到玩家投诉卡进度条的问题.而且后台显示执行队列和CPU使用率异常高 根据调用的JDB分析出 使用xbean 时候会调用以下代码 在设置xmlobject 时候会有一个 GlobalL ...
- php file_get_contents() 用法
php 需要访问某个网页 <?php $fh= file_get_contents('http://www.baidu.com/'); echo $fh; ?> 知识扩充 file_get ...
- RMAN 参数详解
使用RMAN>show all;可以显示出RMAN 配置参数为: CONFIGURE RETENTION POLICY TO REDUNDANCY 1; # defaultCONFIGURE B ...
- 利用dmidecode 查看服务器的信息技巧
Please refer to the link: http://www.laozuo.org/6682.html
- bzoj 3211: 花神游历各国
#include<cstdio> #include<cmath> #include<iostream> #define M 100006 using namespa ...
- tips of my ubuntu 16.04 LTS
update_0 : sudo .../idea.sh 才会把idea安装上,不加sudo也会启动,但是不会在开始菜单中找到程序. ---------------------------------- ...
- Maven搭建SSH环境
一.新建maven项目 选中maven-aechetype-webapp group Id一般为公司域 :Artifact Id相当于项目名称 :version不需要更改:Package不使用默认,手 ...
- [SHTSC 2007] 善意的投票
我就是来复习Dinic算法的,仅10天不写,我已经退化成写一遍+调试需要接近一个小时了,当然其中不乏在网上乱逛的时间… 赞成从S源点连一条单向边,反对向T汇点连一条单向边,朋友关系连双向边. 但是总感 ...
- Android Binder
http://blog.csdn.net/luoshengyang/article/details/6618363 Android进程间通信(IPC)机制Binder简要介绍和学习计划
- 多线程的学习与python实现
学习了进程与线程,现对自己的学习进行记录. 目录: 一.进程与线程的概念,以及联系与区别 二.多线程 三.python中多线程的应用 四.python实例 五.参考文献 一.进程与线程的概念.以及联系 ...