将大尺寸文件(大约2MB)上传到服务器

将大尺寸文件(大约2MB)上传到服务器

问题描述:

我正在开发一个Android移动应用程序,它具有将文件上传到服务器的功能。将大尺寸文件(大约2MB)上传到服务器

我想写一个客户服务器通信代码,记住一个标准。

由于要从移动设备上传的文件大小大约为2MB,因此我们需要将文件以多个部分(数据块)发送到服务器。在将文件发送到服务器之前,我需要确定运行时的信号强度。例如:在信号强度更大的Wi-Fi环境中,与使用2G/3G连接(使用SIM卡)相比,块的数量更少,块的数量将更少将更多&块大小将会更少。

任何建议/示例代码来实现相同将对我有所帮助。 另外,是否有任何Android或第三方API可以照顾的要求。

在此先感谢。

CB

+0

是否有某些原因需要分块文件?我不知道有任何Android大小限制说一个多部分http post。您是否试图避免在发生故障时再次发送整个文件? –

您可以在PhoneStateListener看一看,以确定信号强度。然后根据它设置一个chunkSize。

我不得不写一个应用程序,我用httppost上传/下载大文件(10-20MB以上)。下载很容易,因为您可以使用http“范围”标题。我无法找到一种方法来完成上传。

我能想到的最好方法是用RandomAccessFile打开文件,从文件中读取一个块并将其写入临时文件,然后上载该临时文件。继续完成整个文件,为每个块创建一个临时文件。跟踪您偏好哪个chunkNum。如果成功,则将chunkNum设置回0.

如果在上载过程中连接失败,下次尝试上载时,首先检查chunkNum首选项以查看它是否大于0。 RandomAccessFile的seek()方法将文件指针移动到合适的块并继续。

不幸的是,这种方法增加了创建临时文件的延迟,但我想不出更好的解决方案。

+0

你能分享一个代码吗? –