Блокировать файл при загрузке на FTP - PullRequest
0 голосов
/ 01 марта 2010

У меня есть две службы клиент и сервер. Клиент загружает файл на некоторый FTP и сервер загружает его. Поэтому может возникнуть ситуация, когда клиент не завершит загрузку файла, а сервер уже начнет загружать этот файл. В этой ситуации у меня есть файл. Как можно это решить?

Например, когда я загружаю и одновременно загружаю его с помощью FileZilla, процесс загрузки ожидает завершения загрузки, а затем начинается загрузка. Таким образом, загруженный файл не исправлен.

Вот код загрузки:

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();

Ответы [ 2 ]

0 голосов
/ 01 марта 2010

Если у вас есть контроль над FTP-сервером, вы можете просто заблокировать любой загружаемый файл. Тогда попытка загрузки будет неудачной, пока загрузка не будет завершена. Это имеет обратную сторону от сервера, вынужденного повторять попытки так часто.

0 голосов
/ 01 марта 2010

Одно из решений - загрузить файл со специальным именем или в специальную папку, чтобы загрузчик его не распознал. Затем попросите клиента переместить / переименовать файл, как только он будет полностью загружен, чтобы сервер его распознал.

...