求大量照片上传方案

zshsuming 2012-08-16 09:39:34
小弟在开发一个有大量照片上传需求的程序,照片的质量为最高,像素为800万。
在这样的情况下,经常会报 XXXXXXX byte external allocation too large for this process VM won't let us allocate XXXXXXX bytes的错误,还有每张图片有2.8M左右,上传速度特别慢(WEBSERVICES + SOAP),请问大神们做这样的程序,都是如果处理上面出现的问题的呢?
...全文
223 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
sada09 2012-08-17
  • 打赏
  • 举报
回复
一次性上传那么大的东西必然是oom啦,分段上传仿照握手原理,有个交互过程,虽然慢但是不至于挂掉。否则怎么都会内存爆了的。
zshsuming 2012-08-16
  • 打赏
  • 举报
回复
文件字节流,不会有类似out of memory这样错误吗?就是内存不够用
kldwq2002 2012-08-16
  • 打赏
  • 举报
回复
看你的错误信息,大概是因为一次传给webservice的字节数太大了。你一次不要传整个文件,把一个文件切分成比如500K一段,分几次传上去,然后在服务器端组合还原文件。如果服务器端你改不了,它又不支持大字节传送,那你只能哭了。
kldwq2002 2012-08-16
  • 打赏
  • 举报
回复
直接读文件字节流,分段传给webservice,服务器将其缓存,最后发个结束标志位告诉服务器可以组装文件了。
zshsuming 2012-08-16
  • 打赏
  • 举报
回复
这个方法我想过了,可是图片的压缩率本来就不高,作用并不会很大
zshsuming 2012-08-16
  • 打赏
  • 举报
回复
这个方法我想了,但是图片的压缩率本来就不高的
kldwq2002 2012-08-16
  • 打赏
  • 举报
回复
文件压缩分包成若干小文件上传,服务器端负责解压还原。
zshsuming 2012-08-16
  • 打赏
  • 举报
回复
还有,如果休眠,待机的时候,3G网络是不是会断开?这个有办法解决吗?网上没看到有说,都是说设置WIFI永不休眠的
zshsuming 2012-08-16
  • 打赏
  • 举报
回复
小弟不才,上面的代码是上传图片的代码吗?
我们公司用的是WEBSERVICES,用BYTE做为参数传输
zshsuming 2012-08-16
  • 打赏
  • 举报
回复
流量不存在问题,客户完全接受
kldwq2002 2012-08-16
  • 打赏
  • 举报
回复
1.检查网络状态,如果是3G就提示用户当前操作会消耗大量流量。
2. 试试下面代码
HttpClient httpClient = new DefaultHttpClient();

HttpPost httpPost = new HttpPost(url);

MultipartEntity multiPart = new MultipartEntity();
multiPart.addPart("my_picture", new FileBody(new File(IMG_URL)));

httpPost.setEntity(multiPart);
HttpResponse res = httpClient.execute(httpPost);
zshsuming 2012-08-16
  • 打赏
  • 举报
回复
???????求指点
kldwq2002 2012-08-16
  • 打赏
  • 举报
回复
这个需求本身就很SB啊,手机上有这么干的吗?
zshsuming 2012-08-16
  • 打赏
  • 举报
回复
原来没考虑,现在在考虑,呵呵

FTP的方式,不了解,难道就不用加载大量的内存了吗?
小王爷 2012-08-16
  • 打赏
  • 举报
回复
为什么不用ftp呢

80,351

社区成员

发帖
与我相关
我的任务
社区描述
移动平台 Android
androidandroid-studioandroidx 技术论坛(原bbs)
社区管理员
  • Android
  • yechaoa
  • 失落夏天
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧