2016-04-04 37 views
1

OveByte'ın ICS bileşenlerini temel olarak FTP sunucusuna yüklemek için kullanılan TMagFtp bileşenini kullanıyorum. İşte Delphi - TMagFtp bileşenini kullanarak dosya yüklemesini devam ettirin

kullanıyorum kodudur: Dosya yüklendikten

Replace := FCReplDiff; 

taskres := MagFTPClient.FtpLogon; 
if taskres = TaskResOKNew then 
begin 
    for I := 1 to lstFiles.Count - 1 do 
    begin 
     UploadFileName := lstFiles.Items[I]; 
     UploadFileName := ExtractFileName(UploadFileName); 
     taskres := MagFTPClient.FtpUpOneFile(ProjectFolderPath + UploadFileName, '/jobs/' + ProjectFolderName, ExtractFileName(UploadFileName), Replace); 
     if (taskres = TaskResFail) then 
     begin 
      ShowMessage('Upload Failed' + #13 + GetTaskResName(taskres) + #13 + GetExceptMess(ExceptObject)); 
      UploadFailed := True; 
      Exit; 
     end; 
    end; 

end; 

kez ve bunu yeniden yükleme yükleme işlemini dosya tekrarlayın. Aslında dosyayı atlamalıdır. Söz konusu FTP sunucusu Özgeçmiş'i desteklemektedir. Bunu Filezilla ile kontrol ettim.

Neden olduğunu anlamıyorum?

+0

FCReplDiff tam olarak ne anlama geliyor? –

+0

MagFTP'ye yalnızca farklı boyuttaki dosyaları yükledikten sonra –

+0

hedef dosyasına bildiren bir parametredir. Başka bir Gözlemin Windows 8'de başarısız olduğunu gözlemlediğimi bildirir. Neden? –

cevap

1

TMagFtp.FtpUpOneFile(const LocFileFull, RemTarDir, RemTarFile: string; Replopt: TFileCopyRepl): TTaskResult; 

ait Replopt parametre aşağıdaki değerlerden alır:

TFileCopyRepl = (FCReplNever, FCReplAlways, FCReplDiff, FCReplNewer) ; 

FCReplNever muhtemelen hiç mevcut değiştirir dosyaları kullanma.

Düzeltme.

Kaynağa bakıldığında, FCReplDiff göründüğü takdirde, dosyanın farklı boyutlarda veya zaman damgasının varsayılan değeri 2 saniye olan AllowDiffDT'dan farklı olması durumunda değiştirilmesi mümkündür. FTP sunucusunun farklı bir saat dilimi altında çalıştığı ve özellikle de farklı zamanlarda farklı zamanlarda farklı zamanlarda gerçekleştiğinde, sunucudaki dosya zamanının farklı bir süreye sahip olduğu bildirilmiş olabilir. hemen önce ilk kez.


Düzenleme 2

zamanlarda farklara yukarıdaki teori sorunuzu bilgi ile değerlendirilen edilemez. Bu nedenle, doğrulamak için, MagentaFtp.pas hat 4507

flag := MagCheckReplace (replopt, true, OneSecond * 2, SrcFSize, RFSize, 
                  SrcFileUDT, RFileUDT) ; 

bir kesme noktası koymak ve SrcFileUDT ve RFileUDT değerlerini kontrol edin. Ayrıca neden değiştirilmesine izin verdiğini görmek için MagCheckReplace() işlevine geçin.