Android 通过Base64上传图片到服务器

之前做上传图片是采用HttpServlet上传,不过用了一下Base64上传图片后,感觉比HttpServlet方便很多,大家也可以跟着尝试一下。
前台图片处理:(传Bitmap对象即可)
/**
* 通过Base32将Bitmap转换成Base64字符串
* @param bit
* @return
*/
public String Bitmap2StrByBase64(Bitmap bit){
ByteArrayOutputStream bos=new ByteArrayOutputStream();
bit.compress(CompressFormat.JPEG, 40, bos);//参数100表示不压缩
byte[] bytes=bos.toByteArray();
return Base64.encodeToString(bytes, Base64.DEFAULT);
}
前台发送数据:(調用setImgByStr()方法,第一個參數imgStr 为Bitmap转成Base64的字符串,第二个参数imgName为图片的名字,包含后缀名.jpg)
public static String host = "http://192.168.1.166:8080/ImageServer/";
public static String getContent(String url) throws Exception {
StringBuilder sb = new StringBuilder();
HttpClient client = new DefaultHttpClient();
HttpParams httpParams = client.getParams();
// 设置网络超时参数
HttpConnectionParams.setConnectionTimeout(httpParams, 3000);
HttpConnectionParams.setSoTimeout(httpParams, 5000);
HttpResponse response = client.execute(new HttpGet(url));
HttpEntity entity = response.getEntity();
if (entity != null) {
BufferedReader reader = new BufferedReader(new InputStreamReader(
entity.getContent(), "UTF-8"), 8192);
String line = null;
while ((line = reader.readLine()) != null) {
sb.append(line + "\n");
}
reader.close();
}
return sb.toString();
}
public static HttpResponse post(Map<String, Object> params, String url) {
HttpClient client = new DefaultHttpClient();
HttpPost httpPost = new HttpPost(url);
httpPost.addHeader("charset", HTTP.UTF_8);
httpPost.setHeader("Content-Type",
"application/x-www-form-urlencoded; charset=utf-8");
HttpResponse response = null;
if (params != null && params.size() > 0) {
List<NameValuePair> nameValuepairs = new ArrayList<NameValuePair>();
for (String key : params.keySet()) {
nameValuepairs.add(new BasicNameValuePair(key, (String) params
.get(key)));
}
try {
httpPost.setEntity(new UrlEncodedFormEntity(nameValuepairs,
HTTP.UTF_8));
response = client.execute(httpPost);
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
} catch (ClientProtocolException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} catch (RuntimeException e) {
e.printStackTrace();
}
} else {
try {
response = client.execute(httpPost);
} catch (ClientProtocolException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
return response;
}
public static Object getValues(Map<String, Object> params, String url) {
String token = "";
HttpResponse response = post(params, url);
if (response != null) {
try {
token = EntityUtils.toString(response.getEntity());
response.removeHeaders("operator");
} catch (ParseException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
return token;
}
public static Object setImgByStr(String imgStr,String imgName){
String url = host+"channel-uploadImage.action";
Map<String,Object> params = new HashMap<String, Object>();
params.put("imgStr", imgStr);
params.put("imgName", imgName);
return getValues(params, url);
}
后台接收数据:
public void uploadPhoto() {
//获取存储路径
HttpServletRequest request = ServletActionContext.getRequest();
String path = ServletActionContext.getServletContext().getRealPath("/")+"upload";
File file = new File(path);
if(!file.exists()){
file.mkdir();
}
String imgPath = path + request.getParameter("imgName");
String imgStr = request.getParameter("imgStr");
boolean flag = string2Image(imgStr, imgPath);
JacksonUtil.responseJSON(response, flag);
}
后台图片处理:
/**
* 通过BASE64Decoder解码,并生成图片
* @param imgStr 解码后的string
*/
public boolean string2Image(String imgStr, String imgFilePath) {
// 对字节数组字符串进行Base64解码并生成图片
if (imgStr == null)
return false;
try {
// Base64解码
byte[] b = new BASE64Decoder().decodeBuffer(imgStr);
for (int i = 0; i < b.length; ++i) {
if (b[i] < 0) {
// 调整异常数据
b[i] += 256;
}
}
// 生成Jpeg图片
OutputStream out = new FileOutputStream(imgFilePath);
out.write(b);
out.flush();
out.close();
return true;
} catch (Exception e) {
return false;
}
}
OK ! 如果成功上传前端会接收到true ,反之失败false。希望对大家有所帮助!
# Android
# 通过Base64上传图片到服务器
# 上传图片到服务器
# Android使用post方式上传图片到服务器的方法
# Android实现本地上传图片并设置为圆形头像
# Android Retrofit 2.0框架上传图片解决方案
# Android实现上传图片至java服务器
# android上传图片到PHP的过程详解
# Android 开发 使用WebUploader解决安卓微信浏览器上传图片中遇到的bug
# Android基于OkHttp实现下载和上传图片
# Android异步上传图片到PHP服务器
# Android使用OkHttp上传图片的实例代码
# Android实现点击图片上传SQLite数据库
# 上传图片
# 图片处理
# 上传
# 用了
# 第二个
# 转换成
# 转成
# DefaultHttpClient
# client
# HttpClient
# HttpParams
# getParams
相关文章:
已有域名如何快速搭建专属网站?
如何在腾讯云免费申请建站?
微信小程序制作网站有哪些,微信小程序需要做网站吗?
建站之星后台管理如何实现高效配置?
建站主机无法访问?如何排查域名与服务器问题
南宁网站建设制作定制,南宁网站建设可以定制吗?
赚钱网站制作软件,建一个网站怎样才能赚钱?是如何盈利的?
mc皮肤壁纸制作器,苹果平板怎么设置自己想要的壁纸我的世界?
小视频制作网站有哪些,有什么看国内小视频的网站,求推荐?
唐山网站制作公司有哪些,唐山找工作哪个网站最靠谱?
教学论文网站制作软件有哪些,写论文用什么软件
?
ppt制作免费网站有哪些,ppt模板免费下载网站?
义乌企业网站制作公司,请问义乌比较好的批发小商品的网站是什么?
linux top下的 minerd 木马清除方法
宝塔建站后网页无法访问如何解决?
无锡制作网站公司有哪些,无锡优八网络科技有限公司介绍?
大同网页,大同瑞慈医院官网?
网站制作和推广的区别,想自己建立一个网站做推广,有什么快捷方法马上做好一个网站?
如何选择美橙互联多站合一建站方案?
香港服务器建站指南:外贸独立站搭建与跨境电商配置流程
小捣蛋自助建站系统:数据分析与安全设置双核驱动网站优化
可靠的网站设计制作软件,做网站设计需要什么样的电脑配置?
如何快速生成ASP一键建站模板并优化安全性?
如何选择香港主机高效搭建外贸独立站?
历史网站制作软件,华为如何找回被删除的网站?
如何快速搭建二级域名独立网站?
建站之星如何通过成品分离优化网站效率?
网页设计与网站制作内容,怎样注册网站?
宁波自助建站系统如何快速打造专业企业网站?
如何通过免费商城建站系统源码自定义网站主题与功能?
建站上传速度慢?如何优化加速网站加载效率?
建站主机解析:虚拟主机配置与服务器选择指南
宁波免费建站如何选择可靠模板与平台?
香港服务器选型指南:免备案配置与高效建站方案解析
定制建站方案优化指南:企业官网开发与建站费用解析
如何快速生成橙子建站落地页链接?
建站主机是否属于云主机类型?
如何快速搭建高效WAP手机网站?
如何在Golang中处理模块冲突_解决依赖版本不兼容问题
如何在云虚拟主机上快速搭建个人网站?
如何快速启动建站代理加盟业务?
高配服务器限时抢购:企业级配置与回收服务一站式优惠方案
建站之星CMS建站配置指南:模板选择与SEO优化技巧
Swift中switch语句区间和元组模式匹配
建站主机是否等同于虚拟主机?
微网站制作教程,不会写代码,不会编程,怎么样建自己的网站?
如何在橙子建站上传落地页?操作指南详解
小型网站建站如何选择虚拟主机?
青岛网站设计制作公司,查询青岛招聘信息的网站有哪些?
齐河建站公司:营销型网站建设与SEO优化双核驱动策略
*请认真填写需求信息,我们会在24小时内与您取得联系。