最近在写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;
}