简体   繁体   中英

Block file during uploading on FTP

I have two services client and server. Client upload file on some ftp and server download it. So there can occur situation when client do not finish upload file and server already start download this file. In that situation i have cuted file. How can solve it?

For example when i upload and at the same time download it using FileZilla the download process waiting for upload finish and then start downloading. So downloaded file not correpted.

Here is uploading code:

request = (FtpWebRequest)FtpWebRequest.Create("ftp://192.168.99.3/"
+ file7z); 
request.Credentials = new NetworkCredential("login", "pass"); 
request.Method = WebRequestMethods.Ftp.UploadFile; 
request.Proxy = null;        
request.UsePassive = true; request.UseBinary = true;

byte[] fileContents = File.ReadAllBytes(all7zfullpath); 
request.ContentLength = fileContents.Length;

Stream stRequest = request.GetRequestStream(); 
stRequest.Write(fileContents, 0, fileContents.Length); 
stRequest.Close();

One solution is to upload the file with a special name or in a special folder such that the downloader won't recognize it. Then have the client move/rename the file once it's been completely uploaded so that the server will recognize it.

If you have control over the FTP server, you could simply lock any file that is currently being uploaded. Then the download attempt will fail until the upload is complete. This has the downside of the server having to retry every so often.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM