Saya akan mencoba menggunakan inotify, kode acara IN_CLOSE_WRITE.
Server ftp Apache "Mina" (java) mungkin dapat melakukan apa yang Anda inginkan, termasuk mendeteksi unggahan yang gagal, seperti yang disebutkan di sini
Kutipan:
Dari Ftplet.afterCommand, Anda harus dapat melihat balasannya. Untuk transfer gagal yang dapat dideteksi oleh FtpServer (yang menyebabkan SocketException atau IOException) ini seharusnya seperti 426 atau 551.
Ikhtisar Ftplet di sini, termasuk kode respons.
Tanda tangan metode afterCommand:
FtpletResult afterCommand(FtpSession session, FtpRequest request, FtpReply reply)
Anda akan memeriksa reply.getCode()
dalam metode override Anda. Anda harus membuat subkelas DefaultFtplet
daripada mengimplementasikan Ftplet
antarmuka dari awal.
Perhatikan bahwa DefaultFtplet::afterCommand
menunjukkan cara mendeteksi perintah klien apa yang sedang ditanggapi. Anda dapat memeriksa STOR
atau STOU
dan kode balasan 426
atau 551
untuk mendeteksi unggahan yang gagal.
Namun, ini mungkin tidak mendeteksi unggahan yang sengaja dihentikan oleh klien, jika aplikasi klien memutuskan untuk memperlakukan transfer seolah-olah file tersebut lebih pendek dari aslinya. Dalam kasus koneksi yang terputus secara tidak sengaja, saya pikir pemeriksaan kode balasan akan berfungsi. Pengujian dapat berupa mematikan aplikasi klien, atau menurunkan antarmuka jaringan mesin klien.
Untuk menangani pengunggahan yang berhasil (pertanyaan awal Anda), Anda dapat mencari kode balasan sukses, yaitu 226
.