我正在开发一个Android应用程序,其中我必须将位图存储在远程服务器中.
步骤如下:
步骤1:将位图转换为字节数组并将其从Android应用程序发送到服务器.我将位图作为multipartentity发送.在服务器端,我在doPost()方法中接收到它.
第2步:将字节数组存储在MysqL数据库中.位图存储为blob数据类型.我能够将接收到的字节数组存储到MysqL数据库中.
第3步:检索存储为blob的位图并将其发送回android应用程序.我能够检索blob并将其转换为字节数组并将其发送.
我的问题
问题是从服务器发送的数据是小批量接收的.图像长度为1380,但接收长度为10、50、100的可变长度.当我加总时,我只得到1345,丢失了几个字节的数据我在接收端发布代码.
URL url = new URL( "http://10.0.2.2:8080/ServerPartProject/BlobGetter");
URLConnection yc = url.openConnection();
BufferedReader in = new BufferedReader(new InputStreamReader(yc.getInputStream())); String data;
int val=0;
while((data=in.readLine())!=null){
val=val+data.length(); //The data.length is like 10,20..
}
System.out.println("Total value obtained is "+val);//val was 1345 where it should be 1380
发送端:
OutputStreamWriter writer = new OutputStreamWriter(response.getoutputStream());
writer.write(senddata);
如何全程接收?
解决方法:
不要使用readLine().
您正在使用原始数据.原始数据没有仅文本具有的行.
您的某些字节可能会转换为2字节的unicode字符,这说明您感觉到的数据丢失.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。