我想将我的java应用程序中的zip文件上传到运行Bottle Web框架的服务器。
我之前使用过django服务器,我上传了小文件,将它们转换为二进制数据,然后通过邮件请求发送。
我不确定这是否是这个项目的最佳选择,因为zip文件将介于1-10 MB之间。
转换为二进制文件然后发送数据仍然是理想的,还是会推荐另一种方法。
答案 0 :(得分:0)
上传大文件可能会导致这种糟糕的体验,在上传99%的连接后,您的连接会中断,您必须重新开始。
当通过HTTP将大型文件从应用程序(看起来像你的情况)上传到服务器时,我更喜欢以下方式:
让您的应用程序将文件分成一些合理大小的小块。使用序列号标记这些容器。 POST到您的服务器,此连接将开始上传大文件并发送元数据(文件名等)。然后开始发布块。
当服务器收到一个块时,他应该向客户确认这一点。
在服务器端,您需要实现逻辑以跟踪传输和丢失的块,然后重新组合分块文件。
只是我的两分钱。
或者让服务器决定它需要哪个块。样本对话:
Client: I will upload "test.zip" in 4 chunks.
Server: Go ahead. Please send chunk 1.
Client: I am sending chunk 1 with checksum X.
Server: Thank you, checksum is OK. Please send chunk 2.
Client: I am sending chunk 2 with checksum Y.
Server: Thank you, checksum is bad. Please send chunk 2.
Client: I am sending chunk 2 with checksum Y.
Server: Thank you, checksum is OK. Please send chunk 3.
Client: I am sending chunk 3 with checksum Z.
Server: Thank you, checksum is OK. Please send chunk 4.
Client: I am sending chunk 4 with checksum A.
Server: Thank you, checksum is OK. Have a nice day.
从此开始,如果连接中断,很容易实现丢失块的重新传输。