.NET FtpWebRequest: как проверить, готов ли файл к загрузке - PullRequest
4 голосов
/ 16 ноября 2010

У меня есть служба .NET , использующая FtpWebRequest для загрузки изображений с FTP-сервера. У меня есть камера, которая хранит изображения на том же FTP-сервере.

Если моя служба увидит изображение и попытается загрузить его до того, как камера закончит сохранение того же изображения, «еще не сохраненная часть» изображения будет отображаться серым (повреждена).

Вопрос: Как определить, готово ли изображение для загрузки (полностью сохранено)?

Ответы [ 3 ]

1 голос
/ 16 ноября 2010

Если бы вы имели контроль над службой отправки, вы бы реализовали это, используя файлы маркеров. Если служба отправки будет, например, когда закончите, напишите файл «.finished», вы можете подождать, пока этот файл появится.

Однако я подозреваю, что у вас нет контроля над программным обеспечением в камере. Существует несколько проблем с определением того, закончилась ли загрузка камеры, особенно при медленном интернет-соединении.

Я думаю, что лучшим решением было бы проверить изменения размера файла. Следите за папкой и смотрите, появляются ли новые файлы. Затем, если размер файла не изменился, например, например, минуту, это будет довольно безопасно для вас, чтобы загрузить файл.

1 голос
/ 16 ноября 2010

Заставьте программное обеспечение камеры хранить изображения в другом каталоге (назовем его Dir1).Попробуйте переместить файлы из этого каталога в другой каталог (назовем его Dir2).

Если файл все еще открыт программным обеспечением камеры, перемещение должно завершиться неудачей, поэтому только законченные изображения будут перемещены из Dir1 в Dir2.

Загрузка изображений с Dir2.

0 голосов
/ 16 ноября 2010

Загрузить еще один маленький файл после большого файла.Используйте небольшой файл, чтобы проверить «полноту» (или, возможно, MD5 внутри него тоже подойдет).

...