Android 通过webservice上传多张图片到指定服务器详解
Android通过webservice上传多张图片到指定服务器详解
当你浏览这个的时候相信你对webservice的基本应用已经有一定的了解了,若是还没有明白的小伙伴,可以看我前面写的文章点击打开链接,这几天在开发一款app,需要上传图片到指定服务器吧,但是我刚开始以为在网上面应该有这样的好文章的吧,结果我在网络上找了好多代码,在传递图片的过程中,遇到各种bug,真是国人的东西就是喜欢复制别人的,自己不动手检验一下代码的正确性,哎,我也是无语了,然后我决定花点时间来填补一下这个空缺,写了这一片博文,让小伙伴们不走弯路,,首先我修改的网上的错误代码,Android端代码如下:这个是在异步类的一个方法里面,doInBackground(String...params)
InputStreamfis;
try{
fis=newFileInputStream(params[0]+params[1]);//params[0]为文件路径,params[1]为文件名称
ByteArrayOutputStreambaos=newByteArrayOutputStream();
byte[]buffer=newbyte[4096];
intcount=-1;
StringuploadBuffer=null;
try{
while((count=fis.read(buffer))!=-1){
baos.write(buffer,0,count);
uploadBuffer=Base64.encodeToString(baos.toByteArray(),Base64.DEFAULT);//进行Base64编码Base64.DEFAULT这个不能换成count
}
SoapObjectsoapObject=webServiceBase.getBaseSimpleData(params[1],uploadBuffer,"getImageFromAndroid",AgbcApi.TASKSERVICEURL);
reque=soapObject.getProperty(0).toString();
}catch(IOExceptione){
e.printStackTrace();
}
}catch(FileNotFoundExceptione1){
e1.printStackTrace();
}
服务端代码
publicStringgetImageFromAndroid(Stringfilename,Stringimage){
OutputStreamfos=null;
try{
Datedate=newDate();
DateFormatformat=newSimpleDateFormat("yyyy-MM-dd");
Stringtime=format.format(date);
StringtoDir="d:\\ProgramFiles\\images\\"+time+"\\";//存储路径
byte[]buffer=newBASE64Decoder().decodeBuffer(image);//对android传过来的图片字符串进行解码
FiledestDir=newFile(toDir);
if(!destDir.exists())
destDir.mkdir();
fos=newFileOutputStream(newFile(toDir,filename));//保存图片
fos.write(buffer);
fos.flush();
fos.close();
return"上传图片成功!"+"图片路径为:"+toDir;
}catch(Exceptione){
e.printStackTrace();
}
return"上传图片失败!";
这样只要调用服务端方法就可以上传图片了
然而,你认为到这就完了吗???没有没有啦!这只能是一张一张图片的上传,可是有时候我们需要批量的图片上传,怎么办呢?既然一张图片都搞定了,何况多上图片,用一个循环不就实现了,然而的然而,都怪我们年少轻狂呀,事情往往不是这个简单的,请看这篇文章:https://www.nhooo.com/article/106650.htm
感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!