http://www.cnblogs.com/top5/archive/2012/02/16/2354517.html
最近boss要求做android客户端的图片上传和下载,就是调用服务器的webservice接口,实现从android上传图片到服务器,然后从服务器下载图片到android客户端。
需求下来了,开始动脑筋了呗。
通常,我们调用webservice,就是服务器和客户端(浏览器,android手机端等)之间的通信,其通信一般是传 xml或json格式的字符串。对,就只能是字符串。
我的思路是这样的,从android端用io流读取到要上传的图片,用Base64编码成字节流的字符串,通过调用webservice把该字符串作为参数传到服务器端,服务端解码该字符串,最后保存到相应的路径下。整个上传过程的关键就是 以 字节流的字符串 进行数据传递。下载过程,与上传过程相反,把服务器端和客户端的代码相应的调换。
不罗嗦那么多,上代码。流程是:把android的sdcard上某张图片 上传到 服务器下images 文件夹下。
注:这只是个demo,没有UI界面,文件路径和文件名都已经写死,运行时,相应改一下就行。
1 。读取android sdcard上的图片。
public void testUpload(){
try{
String srcUrl = "/sdcard/"; //路径
String fileName = "aa.jpg"; //文件名
FileInputStream fis = new FileInputStream(srcUrl + fileName);
ByteArrayOutputStream baos = new ByteArrayOutputStream();
byte[] buffer = new byte[1024];
int count = 0;
while((count = fis.read(buffer)) >= 0){
baos.write(buffer, 0, count);
}
String uploadBuffer = new String(Base64.encode(baos.toByteArray())); //进行Base64编码
String methodName = "uploadImage";
connectWebService(methodName,fileName, uploadBuffer); //调用webservice
Log.i("connectWebService", "start");
fis.close();
}catch(Exception e){
e.printStackTrace();
}
}
connectWebService()方法:
//使用 ksoap2 调用webservice
private boolean connectWebService(String methodName,String fileName, String imageBuffer) {
String namespace = "http://134.192.44.105:8080/SSH2/service/IService"; // 命名空间,即服务器端得接口,注:后缀没加 .wsdl,
//服务器端我是用x-fire实现webservice接口的
String url = "http://134.192.44.105:8080/SSH2/service/IService"; //对应的url
//以下就是 调用过程了,不明白的话 请看相关webservice文档
SoapObject soapObject = new SoapObject(namespace, methodName);
soapObject.addProperty("filename", fileName); //参数1 图片名
soapObject.addProperty("image", imageBuffer); //参数2 图片字符串
SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(
SoapEnvelope.VER10);
envelope.dotNet = false;
envelope.setOutputSoapObject(soapObject);
HttpTransportSE httpTranstation = new HttpTransportSE(url);
try {
httpTranstation.call(namespace, envelope);
Object result = envelope.getResponse();
Log.i("connectWebService", result.toString());
} catch (Exception e) {
e.printStackTrace();
}
return false;
}
2。 服务器端的webservice代码 :
public String uploadImage(String filename, String image) {
FileOutputStream fos = null;
try{
String toDir = "C:\\Program Files\\Tomcat 6.0\\webapps\\SSH2\\images"; //存储路径
byte[] buffer = new BASE64Decoder().decodeBuffer(image); //对android传过来的图片字符串进行解码
File destDir = new File(toDir);
if(!destDir.exists()) destDir.mkdir();
fos = new FileOutputStream(new File(destDir,filename)); //保存图片
fos.write(buffer);
fos.flush();
fos.close();
return "上传图片成功!" + "图片路径为:" + toDir;
}catch (Exception e){
e.printStackTrace();
}
return "上传图片失败!";
}
对android 端进行 单元测试调用testUpload()方法,如果你看到绿条的话,说明调用成功!在服务器下,就可以看到你上传的图片了。。。。
当然,这个demo很简陋,没有漂亮UI什么的,但是这是 android端调用webservice进行上传图片的过程。从服务器下载到android端,道理亦然。欢迎大家交流学习。。。。

android之调用webservice实现图片上传相关推荐

  1. Android自定义动态布局 — 多图片上传

    Android自定义动态布局 - 多图片上传 本文介绍Android中动态布局添加图片,多图片上传. 项目中效果图:    技术点: 1.动态添加格局中的线条和添加图片的+号 2.多张图片异步上传 首 ...

  2. Android 嵌套H5 网页,图片上传无法调用手机图片以及嵌套网页中无法调用另一款APP问题记录

    最近项目中用到安卓原生APP 嵌套H5网页,使用安卓原生WebView实现,主要遇到以下两种问题,特此记录: 在H5页面,返回直接回到APP中 监听安卓的返回事件就行了 @Override publi ...

  3. Android简单实现将手机图片上传到服务器中

    在本例中,将会简单的实现安卓手机将图片上传到服务器中,本例使用到了 服务器端:PHP+APACHE 客户端:JAVA 先简单实现一下服务器端的上传并测试上传效果,看实例 <?php if(emp ...

  4. android仿微信发状态图片上传

    常见的两种UI样式: 1.列表最后一张默认显示的是一张"加号"图片,点击可以拍照或者从相册中选择照片.当已选图片超过自定义最大张数(比如9张)时,"加号"图片消 ...

  5. php上传图片 中文,php图片上传方法

    php图片上传方法 发布于 2015-11-07 21:44:59 | 92 次阅读 | 评论: 0 | 来源: PHPERZ PHP开源脚本语言PHP(外文名: Hypertext Preproce ...

  6. PHP图片上传,框架通用

    // 图片上传// 将接口放在线上项目上// 接口调用,把本地图片上传到服务器上public function imgUpload(){$img = $_FILES; // var_dump($img ...

  7. uniapp uview 图片上传

    <template><view><view class="li-price" @click="toggle('center')"& ...

  8. UEditor之图片上传如何和真实项目结合

    开心一笑 周末,五六个朋友聚餐,席间,阿凌注意到阿艳沉默少语,不比以往的活波开朗,像有心事.饭后回去的路上,阿凌走到阿艳身边说:"你的电量好像不够了?" 阿艳:"啊,什么 ...

  9. 微信小程序.图片上传功能

    一.用户行为分析 图片上传按照数量上的差异,一般可划分分单图片上传与多图片上传两种.多图片上传由于数量上的不确定性,让用户有了更多的操作性,逻辑处理上也随之复杂了一些. 单图片上传 用户只能按照一个固 ...

最新文章

  1. A - 排名 HDU - 1236 sort(cmp)
  2. 初学 Java Web 开发,请远离各种框架,从 Servlet 开发
  3. DNS服务在网络中的应用
  4. P3 计算机硬件的基本组成
  5. 继承MonoBehaviour类的优缺点和相关报错
  6. vim编辑器操作汇总
  7. VVC/JEM代码学习17:xCheckRDCostMerge2Nx2NFRUC
  8. (切换多语言)vantUI+vue-i18n进行国际化配置及新增没有的语言包
  9. 二项式展开推广与微积分的关系
  10. gta5结局杀老崔我哭了_GTA5:玩家眼中的重情义,剧情中变定时炸弹,崔佛为何是个疯子?...
  11. TxtView 手机文本阅读器
  12. 403,404,503等 HTTP状态码(HTTP Status Code)
  13. Python Project
  14. php pdf文档内容修改,php2pdf-如何使用php修改pdf中的内容,并且保证格式不乱
  15. [基础算法] 并查集
  16. Android - 获取系统时间和网络时间
  17. 你需要了解的ICT测试三极管的误区
  18. uni-app获取节点信息
  19. SRA转fastq 软件下载
  20. iOS之Swift实现调用第三方地图应用导航

热门文章

  1. ❤️《AOP》(Spring必备技能)
  2. AWT_事件监听(Java)
  3. 解决 Vue 重复点击相同路由,出现 Uncaught (in promise) NavigationDuplicated: Avoided redundant navigation 问题
  4. python之修改pip为阿里源
  5. redis运行redis-server.exe错误
  6. python爬取学校题库_Python爬虫面试题
  7. 一个故事告诉你什么是消息队列
  8. 毛发及眼球的渲染技术
  9. 用easyx画电子钟_实时钟表 · Joker/EasyX - Gitee.com
  10. Perl 读取特定格式的文件名