通过网络传输文件

时间:2015-08-14 03:48:12

标签: java android base64

我通过网络传输文件(图像),从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好像打开

2 个答案:

答案 0 :(得分:0)

我认为代码在发送端进行多个base64编码,在接收端进行一次解码。

值得确保在发送时只有一个编码在完整文件上发生。 接收端只发生一次解码。

稍后您可以尝试N编码和N解码。

答案 1 :(得分:0)

由于发送文件夹会发送多个文件,当一个新文件开始发送时,前一个输入流被关闭以打开一个新文件,但是最终文件下载的输入流从未关闭。