【问题标题】:Upload large size file (approx 2MB) to server将大尺寸文件(约 2MB)上传到服务器
【发布时间】:2011-11-06 15:54:50
【问题描述】:

我正在开发一个 Android 移动应用程序,它具有将文件按顺序上传到服务器的功能。

我想在编写客户端服务器通信代码时牢记一个标准。

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

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

提前致谢。

CB

【问题讨论】:

  • 你有什么理由要分块文件吗?我不知道说多部分 http 帖子有任何 Android 大小限制。您是否试图避免在失败时再次发送整个文件?

标签: android


【解决方案1】:

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

我必须编写一个应用程序来使用 httppost 上传/下载大文件(超过 10-20MB)。下载很容易,因为您可以使用 http“范围”标头。不过,我想不出一种上传的方法。

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

如果在上传过程中连接失败,下次尝试上传时,首先检查你的chunkNum偏好,看是否大于0。RandomAccessFile的seek()方法将文件指针移动到适当的块和恢复。

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-11-16
    • 2012-04-23
    • 1970-01-01
    • 2015-09-29
    • 1970-01-01
    • 2015-04-07
    相关资源
    最近更新 更多