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

将文件从Java程序上载到服务器,java,python,file-upload,bottle,Java,Python,File Upload,Bottle,我想从我的java应用程序上传一个zip文件到一个运行Battle web框架的服务器上 我以前使用过django服务器,我上传了一些小文件,将它们转换成二进制数据,然后通过post请求发送 我不确定这是否是这个项目的最佳想法,因为zip文件将在1-10MB之间 还是将数据转换为二进制然后发送数据比较理想,还是有其他推荐方法。上传大文件可能会导致这种可怕的体验,上传99%后,您的连接会中断,您必须重新开始 当通过HTTP将一个大文件从一个应用程序上传到服务器时,我更喜欢以下方式: 让您的应用程序

我想从我的java应用程序上传一个zip文件到一个运行Battle web框架的服务器上

我以前使用过django服务器,我上传了一些小文件,将它们转换成二进制数据,然后通过post请求发送

我不确定这是否是这个项目的最佳想法,因为zip文件将在1-10MB之间


还是将数据转换为二进制然后发送数据比较理想,还是有其他推荐方法。

上传大文件可能会导致这种可怕的体验,上传99%后,您的连接会中断,您必须重新开始

当通过HTTP将一个大文件从一个应用程序上传到服务器时,我更喜欢以下方式:

让您的应用程序将文件分成大小合理的小块。用序列号标记这些垃圾。向您的服务器发布此连接将开始上载一个大文件并发送元数据文件名等。然后开始发布区块

当服务器收到块时,他应该向客户端确认这一点

在服务器端,您需要实现逻辑来跟踪传输的和丢失的块,然后重新组装块文件

只要我的两分钱

或者让服务器决定它需要哪个块。对话范例:

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.

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

如果zip文件不是二进制文件,它将无法工作。除非你说的是传输的文本编码,这会增加文件大小。如果zip文件不是二进制文件,我不确定你的意思。一切都是二进制的。我只要把文件读成二进制文件就可以了。我打算把它读成二进制,然后用base64编码,这样数据就少了。