您的位置:首页 > 移动开发 > Android开发

客户端Android和Webservice之间的图片文件传输解决方法

2014-12-13 09:53 441 查看
最近在写webservice接口 给客户端提供数据和接收客户端发来的数据。当数据类型为图片类型的文件时候,先把文件转为流,然后用Base64编码成字节流的字符串,传输的还是字符串。

客户端代码:

public static void main(String[] args) throws IOException {
File file=new File("d:/272.jpg");
FileInputStream fis = new FileInputStream(file);
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编码
fis.close();
writeSmilFile(uploadBuffer);
System.out.println("uploadBuffer:"+uploadBuffer);
}

//写到txt
public static void writeSmilFile(String content) {
File file1 = new File( "d:/123.txt");
try {
file1.createNewFile();
} catch (IOException e) {
e.printStackTrace();
}
PrintWriter pw;
try {
OutputStreamWriter os = null;
os = new OutputStreamWriter(new FileOutputStream(file1),"UTF-8");
os.write(content);
os.close();
} catch (IOException e) {
e.printStackTrace();
}

}


服务器端代码:
//获取客户端传来的图片文件 (  客户端处理是文件转换为流  Base64编码成字符串)
public String getPhotoByAndroid(String photoPath){

//图片存放路径 放到正式需要修改
String newFilePath="D:/";

String newFileName =UUID.randomUUID().toString()+"jpg";
FileOutputStream fos = null;
byte[] buffer;
try {
buffer = new BASE64Decoder().decodeBuffer(photoPath);

//对android传过来的图片字符串进行解码
File destDir = new File(newFilePath);
if(!destDir.exists()) destDir.mkdir();
fos = new FileOutputStream(new File(destDir,newFileName));   //保存图片
fos.write(buffer);
fos.flush();
fos.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
System.out.println("上传图片成功!" + newFilePath+newFileName);
return newFileName;

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐