首先,我还没有编写任何代码,我只处于设计/思考阶段,因此我正在研究如何做我想做的事情,这篇文章是为了得到在我开始编码之前的一些方位。
所以,我想创建一个应用程序,它可以获取一些信息和图像(最好是来自摄像头)并将其上传到我的测试计算机中的数据库,以后可能会上传到专用服务器。
我想的是制作一些Web服务,包括传输服务,这样我就可以下载并上传图像到我的数据库,数据库是MongoDB的No-SQL数据库(No-RDBMS) 。该数据库基于文档,这使得查询超快,并且存储二进制文件不再是一个问题。
但是,这是我的第一个问题:使用网络服务上传/下载文件是否合适?特别是对于移动设备?如果不是我可以使用什么,如果它不是问题,我应该使用什么框架(我正在思考Axis2),以及为什么。我将尝试使用一些库使文件大小尽可能小,以缩短传输时间。
第二个问题是,如果最好在一天的特定时间进行批量上传,或者在设备上完成操作后立即上传文件?,我知道这是一个简单的问题,但这是对启蒙的追求,我想知道,特别是在移动设备上什么是最好的。
现在,我应该使用什么类型的流进行上传/下载?我一直在阅读,将图像转换为字节数组会消耗大量的CPU,我不知道#39;我希望我的应用程序缓慢,但这是最简单的方法。然后使用DataHandlers
进行传输,但它似乎很复杂,但CPU上并不那么苛刻(如果我错了,请在我说的任何内容上纠正我),所以我不要& #39;知道要使用什么。
感谢您的时间,并阅读这一文字墙,但我正努力提高自己的技能,所以非常感谢任何帮助。
修改
我发现这个帖子对我尝试做的事情非常有用:
答案 0 :(得分:1)
Is it good to upload/download a file using a web service?
是的,您可以使用Web服务轻松地从服务器上传/下载文件。但你也必须scrpting ar服务器端(使用PHP,.net等...)。它对您将来的使用也很有用,只需要更改服务器的地址。
It is better to make a batch upload at specific times of day, or upload the files immediately after the operations are finished on the device?
您可以根据自己的需要和网络的可用性以及要上传文件的操作号来实现。您可以在应用程序运行时在后台(使用AsyncTask,Service,Thread等)执行此操作,因此我认为您的前端活动没有任何开销。
What kind of stream should I use for the upload/download?
这还取决于您在服务器上维护数据或在服务器上操作数据的方式。如果您使用直接文件(有一个apache库可用)请求webservice上传下载我认为您不需要在ByteArray中转换数据的复杂工作,(但我认为在后台它发生了)。
希望你的工作完成了。
答案 1 :(得分:0)
如果是我,我会使用套接字进行通信。捕获,标记等每个图像后,启动一个新线程进行上传 - 甚至是服务,所以如果你的应用程序关闭,上传将继续。您可以在顶级酒吧市场中跟踪进度。您的手机可以在开始上传之前进行各种CRC校准,然后让服务器在完成后执行相同的操作,这样您也可以进行错误检查。您可以排队服务中的所有上传内容。
转换为BYTE阵列并不是什么大不了的事。 Esp,如果你指出整个过程。