在我的項目中,我有一個文件上傳功能。文件通過FTP上傳。我需要配置一個偵聽器,它只會在文件上傳完成時檢查新文件並調用腳本。因爲如果我在檢測到新文件後立即運行此腳本,它可以開始處理未完全上傳的文件,這將導致錯誤。任何人都可以告訴LINUX上這是否可行,我該怎麼做?LINUX:如何檢測到FTP文件上傳完成
回答
我想嘗試使用inotify,事件代碼IN_CLOSE_WRITE。
+1,但值得一提的是一些ftp服務器創建一個隱藏的臨時文件來接收數據,直到xfer完成。即'.foo-ftpupload-2837948723'在與目標文件相同的上傳路徑中,所以您需要確保您的事件循環可以處理該事件,並在該文件實際重命名之前不觸發任務。 – 2010-06-18 14:58:52
@Tim Post好點。 vsftp例如不這樣做 – Pete 2010-06-18 15:03:05
謝謝你的建議。我嘗試了inotify,但是我發現它在文件沒有完全上傳的情況下觸發IN_CLOSE_WRITE,但連接丟失(例如,如果我停止上傳或關閉FTP客戶端)。所以我相信沒有辦法檢測文件COMPLETELY上傳,而不是使用HTTP。它是否正確? – andr111 2010-06-19 07:24:17
看一看inotify
它不會自動腕錶子目錄雖然,所以如果你需要監視許多FTP帳戶(或FTP客戶端想要創建一個子目錄和上傳有),你會需要自己處理。
正確。對於任何守護進程正在進行的監視,推薦使用廣度優先搜索(類似於'ftw()',但寬度優先),因此在開始時不會丟失子目錄。 – 2010-06-18 15:08:31
阿帕奇 「米娜」 FTP服務器(JAVA)也許能夠做你想做的,包括檢測上傳失敗,如前所述here
報價:
從Ftplet.afterCommand,你應該 能夠看到答覆。對於那些 失敗傳輸時該FTPServer的 可以檢測(會導致一個 SocketException或IOException的)這個 應該像426或551
Ftplet概述here,包括響應代碼。
的afterCommand方法簽名:
FtpletResult afterCommand(FtpSession session, FtpRequest request, FtpReply reply)
你會檢查reply.getCode()
在您的覆蓋方法。您應該繼承DefaultFtplet
而不是從零開始實現Ftplet
接口。
請注意DefaultFtplet::afterCommand
顯示如何檢測正在響應的客戶端命令。您可以檢查STOR
或STOU
和回覆代碼426
或551
以檢測上傳失敗。
但是,如果客戶端應用程序決定將傳輸視爲文件比它短,則這可能無法檢測到客戶端有意終止的上載。在無意中斷開連接的情況下,我認爲回覆代碼檢查將起作用。測試可能是殺死客戶端應用程序,或者關閉客戶端機器的網絡接口。
要處理成功上傳(您的原始問題),您可以查找成功答覆代碼,即226
。
我一直在尋找同樣的事情,並且偶然發現了具有上傳腳本功能的pureftpd。聽起來像是需要什麼。在這裏找到詳細信息:http://www.linuxbyexamples.net/2012/10/config-ftp-server-trigger-upload-file-to-call-external-script.html
可用鏈接.... – TheCarver 2015-11-07 17:07:29
我已經使用Proftpd的HiddenStores功能。它通過以.in.filename.ext爲前綴來保留傳輸中的文件,直到它們完成上傳。您的進程可以安全地列出已完成文件的目錄。
http://www.proftpd.org/docs/directives/linked/config_ref_HiddenStores.html
- 1. 如何檢測FTP文件傳輸完成?
- 2. 檢測SFTP文件上傳完成
- 3. IIS FTP是否包含一個API來檢測文件上傳何時完成?
- 4. 如何使用jQuery檢測文件上傳是否已完成?
- 5. 文件沒有成功上傳到FTP
- 6. c#ftp上傳到Linux
- 7. 檢測上次文件上傳完成的時間?
- 8. 測試上傳完成到FTP服務器
- 9. 上傳文件到FTP
- 10. 上傳文件到FTP C#
- 11. 如何使用Ajax檢測JSF2.0中的文件上傳完成事件
- 12. FTP:上傳文件到FTP和驗證
- 13. 使用blueimp文件上傳時,如何檢測上傳隊列中的所有文件何時完成?
- 14. APPE FTP命令傳輸完成檢測serverside
- 15. FTP上傳文件 - 如何確定服務器上的文件上傳已完成
- 16. PHP如何檢查文件是否完成上傳
- 17. 如何檢測文件操作目前是否在Linux上的文件上完成
- 18. Ftp文件上傳
- 19. 如何將FTP文件從Windows機器傳輸到Linux機器
- 20. 使用Qt在Linux上不成功上傳到ftp服務器
- 21. SimpleHTTPServer,檢測文件傳輸何時完成?
- 22. Java上傳文件到遠程Linux服務器WITHOUT FTP或SCP
- 23. 如何監視FTP上傳文件夾的新上傳文件?
- 24. grails g:uploadForm如何檢測由GSP上傳完成
- 25. FTP確認傳輸完成
- 26. Python FTP上傳與多處理 - 上傳的文件不完整
- 27. ftp文件檢索未完成的文件
- 28. 如何使用ftp上傳.htaccess文件
- 29. 如何通過FTP上傳文件夾?
- 30. 將上一小時生成的文件上傳到FTP
您能指定您想使用的語言嗎? – 2010-06-18 15:02:08