将文件从Java程序上载到服务器

时间:2014-01-09 01:10:41

标签: java python file-upload bottle

我想将我的java应用程序中的zip文件上传到运行Bottle Web框架的服务器。

我之前使用过django服务器,我上传了小文件,将它们转换为二进制数据,然后通过邮件请求发送。

我不确定这是否是这个项目的最佳选择,因为zip文件将介于1-10 MB之间。

转换为二进制文件然后发送数据仍然是理想的,还是会推荐另一种方法。

1 个答案:

答案 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.

从此开始,如果连接中断,很容易实现丢失块的重新传输。