修改ftp上檔案的修改日期? |
答題得分者是:timhuang
|
channel
尊榮會員 發表:67 回覆:707 積分:854 註冊:2002-05-02 發送簡訊給我 |
|
P.D.
版主 發表:603 回覆:4038 積分:3874 註冊:2006-10-31 發送簡訊給我 |
引言: 各位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 發送簡訊給我 |
引言: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引言: 各位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後去讀內容的資料, 再解成 上面的日期時間來變更, 這是比較快的方法
------
~小弟淺見,參考看看~ |
timhuang
尊榮會員 發表:78 回覆:1815 積分:1608 註冊:2002-07-15 發送簡訊給我 |
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 發送簡訊給我 |
引言: 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:27timhuang兄: 感謝您的回應… 小弟不才,不知道要如何執行MDTM yyyymmddhhnnss file-name這一段程式,用ShellExecute嗎?敬請指教…感激不盡…
------
~小弟淺見,參考看看~ |
timhuang
尊榮會員 發表:78 回覆:1815 積分:1608 註冊:2002-07-15 發送簡訊給我 |
當然不是用 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 發送簡訊給我 |
引言: 當然不是用 ShellExecute 囉, 是要對遠端的 ftp server 下達 ftp command 利用 SendCmd 即可, 弟寫了一個小範例, 給你參考,timhuang兄: 感謝您的回試,小弟試的結果,不行耶…FTP不支援MDTM的指令,請問還有其他方法嗎?還是有其他機制可以達到?敬請指教,感激不盡…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;
------
~小弟淺見,參考看看~ |
hagar
版主 發表:143 回覆:4056 積分:4445 註冊:2002-04-14 發送簡訊給我 |
|
william
版主 發表:66 回覆:2535 積分:3048 註冊:2002-07-11 發送簡訊給我 |
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 發送簡訊給我 |
引言: 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.cawilliam兄: 小弟要如何執行用SITE EXEC的指令來改變FTP上檔案的修改日期?
------
~小弟淺見,參考看看~ |
william
版主 發表:66 回覆:2535 積分:3048 註冊:2002-07-11 發送簡訊給我 |
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 發送簡訊給我 |
|
channel
尊榮會員 發表:67 回覆:707 積分:854 註冊:2002-05-02 發送簡訊給我 |
|
channel
尊榮會員 發表:67 回覆:707 積分:854 註冊:2002-05-02 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |