線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:4188
推到 Plurk!
推到 Facebook!

修改ftp上檔案的修改日期?

答題得分者是:timhuang
channel
尊榮會員


發表:67
回覆:707
積分:854
註冊:2002-05-02

發送簡訊給我
#1 引用回覆 回覆 發表時間:2004-12-26 20:31:42 IP:218.171.xxx.xxx 未訂閱
各位Delphi前輩: 小弟使用TIDFTP的元件,將Client端的檔案傳送到FTP Server上,結果上傳到FTP Server檔案的修改日期被修改為傳送的日期,與原來Client端檔案的修改日期不同,請問要如何做才能達到由Client端傳送到FTP Server上的檔案,其檔案的修改日期同Client端檔案的修改日期?敬請指教,感激不盡…
------
~小弟淺見,參考看看~
P.D.
版主


發表:603
回覆:4038
積分:3874
註冊:2006-10-31

發送簡訊給我
#2 引用回覆 回覆 發表時間:2004-12-27 00:39:59 IP:61.71.xxx.xxx 未訂閱
引言: 各位Delphi前輩: 小弟使用TIDFTP的元件,將Client端的檔案傳送到FTP Server上,結果上傳到FTP Server檔案的修改日期被修改為傳送的日期,與原來Client端檔案的修改日期不同,請問要如何做才能達到由Client端傳送到FTP Server上的檔案,其檔案的修改日期同Client端檔案的修改日期?敬請指教,感激不盡…
這個基本上有些棘手, 要分幾個層面 1.變更目前檔案的日期時間
procedure ...
  var fHandle: THandle;
      fdate: TDateTime;
begin
  fdate:= StrtoDateTime('2004/12/24 13:00:00');
  fHandle:= FileOpen('c:\test.dbf', fmOpenWrite);
  FileSetDate(fHandle, DateTimeToFileDate(fdate));
  FileClose(fHandle);
...
end;    2.如何得知server端的檔案日期
由於透過FTP下來的都會被更改日期, 所以我的做法是下載一個LOG檔
該檔記錄此檔案的日期時間, 下載LOG FILE後去讀內容的資料, 再解成
上面的日期時間來變更, 這是比較快的方法
channel
尊榮會員


發表:67
回覆:707
積分:854
註冊:2002-05-02

發送簡訊給我
#3 引用回覆 回覆 發表時間:2004-12-27 11:07:26 IP:211.21.xxx.xxx 未訂閱
引言:
引言: 各位Delphi前輩: 小弟使用TIDFTP的元件,將Client端的檔案傳送到FTP Server上,結果上傳到FTP Server檔案的修改日期被修改為傳送的日期,與原來Client端檔案的修改日期不同,請問要如何做才能達到由Client端傳送到FTP Server上的檔案,其檔案的修改日期同Client端檔案的修改日期?敬請指教,感激不盡…
這個基本上有些棘手, 要分幾個層面 1.變更目前檔案的日期時間
procedure ...
  var fHandle: THandle;
      fdate: TDateTime;
begin
  fdate:= StrtoDateTime('2004/12/24 13:00:00');
  fHandle:= FileOpen('c:\test.dbf', fmOpenWrite);
  FileSetDate(fHandle, DateTimeToFileDate(fdate));
  FileClose(fHandle);
...
end;    2.如何得知server端的檔案日期
由於透過FTP下來的都會被更改日期, 所以我的做法是下載一個LOG檔
該檔記錄此檔案的日期時間, 下載LOG FILE後去讀內容的資料, 再解成
上面的日期時間來變更, 這是比較快的方法
P.D.兄: 您有一點誤會我的意思,您的作法是從FTP下載檔案到Client端,修改Client端檔案的修改日期,但是小弟的問題剛好相反,小弟的意思是從Client端上傳到FTP,在Client端修改FTP檔案的修改日期…不知是否還有其他方法…敬請指教,感激不盡… ps: fHandle:= FileOpen('c:\test.dbf', fmOpenWrite); FileOpen只能找本機電腦的檔案,好像無法取得遠端的檔案 fHandle:= FileOpen('ftp:\\192.168.1.254\test.dbf', fmOpenWrite);=>無法找到 發表人 - channel 於 2004/12/27 11:11:55
------
~小弟淺見,參考看看~
timhuang
尊榮會員


發表:78
回覆:1815
積分:1608
註冊:2002-07-15

發送簡訊給我
#4 引用回覆 回覆 發表時間:2004-12-27 18:17:22 IP:203.95.xxx.xxx 未訂閱
Hi, 就弟所知, 這個得看你 ftp server 上的設定, 若是 server 上的設定就是如此, 可能沒有辦法解決, 不過也可以查看 server 是否有 support MDTM 指令, 可以修改檔案日期及時間, 請參考, http://www.nsftools.com/tips/RawFTP.htm#MDTM 這篇只有顯示的語法介紹, 若是要修改 server 上的檔案日期時間, 語法為: MDTM yyyymmddhhnnss file-name 這樣即可!! 發表人 - timhuang 於 2004/12/27 18:28:27
channel
尊榮會員


發表:67
回覆:707
積分:854
註冊:2002-05-02

發送簡訊給我
#5 引用回覆 回覆 發表時間:2004-12-27 18:47:16 IP:211.21.xxx.xxx 未訂閱
引言: Hi, 就弟所知, 這個得看你 ftp server 上的設定, 若是 server 上的設定就是如此, 可能沒有辦法解決, 不過也可以查看 server 是否有 support MDTM 指令, 可以修改檔案日期及時間, 請參考, http://www.nsftools.com/tips/RawFTP.htm#MDTM 這篇只有顯示的語法介紹, 若是要修改 server 上的檔案日期時間, 語法為: MDTM yyyymmddhhnnss file-name 這樣即可!! 發表人 - timhuang 於 2004/12/27 18:28:27
timhuang兄: 感謝您的回應… 小弟不才,不知道要如何執行MDTM yyyymmddhhnnss file-name這一段程式,用ShellExecute嗎?敬請指教…感激不盡…
------
~小弟淺見,參考看看~
timhuang
尊榮會員


發表:78
回覆:1815
積分:1608
註冊:2002-07-15

發送簡訊給我
#6 引用回覆 回覆 發表時間:2004-12-27 22:01:30 IP:220.132.xxx.xxx 未訂閱
當然不是用 ShellExecute 囉, 是要對遠端的 ftp server 下達 ftp command 利用 SendCmd 即可, 弟寫了一個小範例, 給你參考,    
var
  sRes: string;
begin
  IdFTP1.Host := 'ftp.test.com';
  IdFTP1.Port := 21;
  IdFTP1.Username := 'username';
  IdFTP1.Password := 'password';
  IdFTP1.Connect;
  sRes := IntToStr(IdFTP1.SendCmd('mdtm 20040501100900 file.txt'));
  if copy(sRes, 1, 1)='2' then
    ShowMessage('ok')
  else
    ShowMessage('fail with response:' + IdFTP1.LastCmdResult.Text.Text);
  IdFTP1.Disconnect;
end;
channel
尊榮會員


發表:67
回覆:707
積分:854
註冊:2002-05-02

發送簡訊給我
#7 引用回覆 回覆 發表時間:2004-12-28 10:31:23 IP:211.21.xxx.xxx 未訂閱
引言: 當然不是用 ShellExecute 囉, 是要對遠端的 ftp server 下達 ftp command 利用 SendCmd 即可, 弟寫了一個小範例, 給你參考,
var
  sRes: string;
begin
  IdFTP1.Host := 'ftp.test.com';
  IdFTP1.Port := 21;
  IdFTP1.Username := 'username';
  IdFTP1.Password := 'password';
  IdFTP1.Connect;
  sRes := IntToStr(IdFTP1.SendCmd('mdtm 20040501100900 file.txt'));
  if copy(sRes, 1, 1)='2' then
    ShowMessage('ok')
  else
    ShowMessage('fail with response:' + IdFTP1.LastCmdResult.Text.Text);
  IdFTP1.Disconnect;
end;
timhuang兄: 感謝您的回試,小弟試的結果,不行耶…FTP不支援MDTM的指令,請問還有其他方法嗎?還是有其他機制可以達到?敬請指教,感激不盡…
------
~小弟淺見,參考看看~
hagar
版主


發表:143
回覆:4056
積分:4445
註冊:2002-04-14

發送簡訊給我
#8 引用回覆 回覆 發表時間:2004-12-28 10:45:18 IP:202.39.xxx.xxx 未訂閱
在小弟的認知裡  如果
william
版主


發表:66
回覆:2535
積分:3048
註冊:2002-07-11

發送簡訊給我
#9 引用回覆 回覆 發表時間:2004-12-28 14:54:03 IP:147.8.xxx.xxx 未訂閱
It all depends on what kind of ftp server you are using.....    Perhaps 'SITE EXEC' command or other site commands could help.    http://pywong.hk.st http://www.lazybones.ca
channel
尊榮會員


發表:67
回覆:707
積分:854
註冊:2002-05-02

發送簡訊給我
#10 引用回覆 回覆 發表時間:2004-12-28 15:14:44 IP:211.21.xxx.xxx 未訂閱
引言: It all depends on what kind of ftp server you are using..... Perhaps 'SITE EXEC' command or other site commands could help. http://pywong.hk.st http://www.lazybones.ca
william兄: 小弟要如何執行用SITE EXEC的指令來改變FTP上檔案的修改日期?
------
~小弟淺見,參考看看~
william
版主


發表:66
回覆:2535
積分:3048
註冊:2002-07-11

發送簡訊給我
#11 引用回覆 回覆 發表時間:2004-12-28 17:00:57 IP:147.8.xxx.xxx 未訂閱
SITE EXEC is used commonly to tell the ftp server to execute an executable file. Even if your ftp server supports the SITE EXEC command, you may need to build your own statically linked executable and put it into the ftp bin directory....    Perhaps you should try to send a 'SITE HELP' command and see what site commands are supported. e.g. using MS ftp client:    >ftp yourftpserver login as usual >quote "site help"    http://pywong.hk.st http://www.lazybones.ca
timhuang
尊榮會員


發表:78
回覆:1815
積分:1608
註冊:2002-07-15

發送簡訊給我
#12 引用回覆 回覆 發表時間:2004-12-28 18:29:32 IP:203.95.xxx.xxx 未訂閱
請問是什麼 ftp server 呢? 可以找看看有沒有這方面的設定資料!!
channel
尊榮會員


發表:67
回覆:707
積分:854
註冊:2002-05-02

發送簡訊給我
#13 引用回覆 回覆 發表時間:2004-12-28 19:15:42 IP:211.21.xxx.xxx 未訂閱
引言: 請問是什麼 ftp server 呢? 可以找看看有沒有這方面的設定資料!!
架在Linus上的…
------
~小弟淺見,參考看看~
channel
尊榮會員


發表:67
回覆:707
積分:854
註冊:2002-05-02

發送簡訊給我
#14 引用回覆 回覆 發表時間:2004-12-29 13:42:09 IP:211.21.xxx.xxx 未訂閱
謝謝各位大大的回應… 利用FTP修改檔案的修改日期似乎達不到,所以小弟決定想其他的方式來解決,例如在Client端以資料庫的方式記錄上傳到FTP時各個檔案的的修改日期,如此就不用管上傳到FTP之後的檔案其修改日期如何變動… 如此勞師動眾請各位大大幫位,深感歉意,在此獻上最高的謝意給各位大大…
------
~小弟淺見,參考看看~
系統時間:2024-08-08 7:15:18
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!