CuteFTP Server has the ability to accept multi-part uploads from advanced FTP clients, such as CuteFTP Professional. As long as the user has sufficient privileges and can connect multiple times concurrently, then multi-part uploads may occur.
The connecting client takes care of most details, including splitting the file apart, sending the multiple parts, and then requesting that the server to join them again upon receipt. The command that joins these parts together has been defined as “COMB”.
The COMB command is a proprietary command and is not defined nor endorsed by any FTP related RFC. However, competing servers who wish to implement this command may do so using the following syntax.
COMB <TF> <SF 1> … <SF n>
<TF> - path to target file, which will contain the combined data from the source parts.
<SF #> - source files (parts).
- Combine n source files (SF 1...n) into one file (TF).
- If the Target File already exists, then server appends source files to it.
- The server will delete all the source files once combined successfully.
- All File Names should be in quotes.
250 Requested file action okay, completed.
450 Requested file action not taken. (File is busy)
550 Requested action not taken. (No write permission, TF exists and is read-only, or one of the SF paths is incorrect.)
The client must upload n files simultaneously or separately. After all uploads are finished, it combines them into one. This approach may also help solve problems with broken uploads.
Multi-Part upload of file: File.dat (size 1mb)
The client divides file.dat intto 4 parts (250kb each) and uploads them to the server, naming them file.p1, file.p2, file.p3, file.p4. After all transfers are finished the client calls: COMB "file.dat" "file.p1" "file.p2" "file.p3" "file.p4"
The client didn't successfully upload file.dat and the particular server doesn't allow APPE or the REST command. Client starts a new upload from the point he finished and stores data in file.p1. If successful, it may call COMB "file.dat" "file.p1". The server will then append file.p1 to file.dat and delete file.p1.