Определите, когда загруженный файл FTP готов к обработке с помощью FileSystemWatcher - PullRequest
3 голосов
/ 27 марта 2012

Я хочу, чтобы пользователи могли загружать файлы через FTP на мой сайт (IIS 7.5). Как только файл загружен, я хочу обработать файл с помощью FileSystemWatcher. Как вы можете определить, когда файл завершил загрузку на сервер? Я не хочу обрабатывать его до завершения загрузки.

Ответы [ 3 ]

3 голосов
/ 27 марта 2012

На самом деле нет никакого способа узнать, что файл завершил загрузку. Возможно даже, что он сначала частично загружен, а позже завершен.

Вам нужно либо определить из содержимого файла, что это полный файл, либо использовать какой-либо другой маркер. Например, пустой файл, означающий завершение, то есть пользователь сначала загружает file1.dat, а затем загружает file1.done, чтобы указать, что теперь file1.dat может быть обработано.

1 голос
/ 25 ноября 2013

Если вы используете IIS 7.5 и выше, вы можете написать провайдера FTP, который может запустить процесс - он не будет использовать File System Watcher, но, вероятно, предоставит лучшую альтернативу.

Вот руководство по IIS, в котором показан пример (в данном случае отправки электронного письма с уведомлением), который вы можете адаптировать к вашим целям.

http://learn.iis.net/page.aspx/632/how-to-use-managed-code-c-to-create-an-ftp-provider-that-sends-an-email-when-files-are-uploaded/

0 голосов
/ 13 января 2013

На самом деле вы можете проверять размер файла каждую секунду, и если он не увеличивается некоторое время, возможно, передача готова.

...