我正在网络上传输一个文件(图像),从pc到android。服务器代码是:
int offset = 0;
BufferedInputStream bis = new BufferedInputStream(new FileInputStream(requested));
byte[] temp = new byte[300];
int len;
while((len = bis.read(temp)) > 0){
byte[] data;
if(len == temp.length){
data = temp;
}
else{
data = new byte[len];
System.arraycopy(temp, 0, data, 0, len);
}
writer.println(Base64.encode(data));
}
bis.close();而接收它的客户端( android):
byte[] bytes = Base64.decode(input, Base64.NO_WRAP);
fos.write(bytes, 0, bytes.length);( fos变量是带有文件输出流的缓冲输出流)
文件到达,大小与发送的文件相同,然而,当文件在android上打开时,图像应用程序会显示一个黑色的屏幕。
编辑:所有.GIF似乎都打开了精细的
发布于 2015-08-14 04:33:14
因为发送文件夹会发送多个文件,所以当一个新文件开始发送时,上一个文件的输入流被关闭以打开新文件的输入流,但是下载的最终文件的输入流从未关闭。
发布于 2015-08-14 04:09:02
我认为代码正在发送端执行多个base64编码,在接收端执行一个解码。
这是值得确保只有一个编码发生在完整的文件,同时发送。只有一个解码发生在接收端。
稍后,您可以尝试使用N个编码和N个解码。
https://stackoverflow.com/questions/32001976
复制相似问题