2010-11-16 30 views
4

J'ai un service .NET en utilisant le FtpWebRequest pour télécharger des images à partir d'un serveur FTP. J'ai une caméra qui stocke des images sur le même serveur FTP.FtpWebRequest .NET: Comment vérifier si le fichier est prêt à télécharger

Si mon service voit une image et essaie de la télécharger avant que l'appareil photo ait fini de stocker la même image, la partie «pas encore enregistrée» de l'image apparaît grisée (corrompue).

Question: Comment puis-je détecter si l'image est prête pour le téléchargement (complètement enregistrée)?

+0

Une solution de contournement sale consiste à télécharger uniquement les images plus anciennes que x minutes. – Bobby

Répondre

1

Si vous contrôliez le service d'envoi, vous l'implémenteriez à l'aide de fichiers de marqueurs. Si le service d'envoi doit, par exemple, écrire un fichier ".finished" quand c'est fait, vous pourriez attendre que ce fichier apparaisse. Cependant, je suppose que vous n'avez aucun contrôle sur le logiciel de l'appareil photo. Il y a quelques problèmes avec la détection si l'appareil photo a fini de télécharger, en particulier avec une connexion Internet lente.

Je pense que la meilleure solution serait de vérifier les changements de taille de fichier. Surveiller le dossier et voir si de nouveaux fichiers apparaissent. Ensuite, si la taille du fichier n'a pas changé pour, par exemple, une minute, il devrait être assez sûr pour vous de télécharger le fichier.

+0

@ ** Pieter **: Vous avez raison, je n'ai pas de contrôle sur le logiciel de l'appareil photo. Je vais poursuivre l'idée de moniteur de taille de fichier - merci pour votre réponse =) – Chau

+0

De rien. –

0

Téléchargez un autre petit fichier après le gros fichier. Utilisez le petit fichier pour vérifier l'exhaustivité (ou peut-être un MD5 à l'intérieur fonctionnerait aussi).

1

Faites que le logiciel de l'appareil photo stocke les images dans un répertoire différent (appelons-le Dir1). Essayez de déplacer les fichiers de ce répertoire vers un autre répertoire (appelons-le Dir2).

Si un fichier est toujours ouvert par le logiciel de l'appareil photo, le déplacement doit échouer, ainsi seules les images terminées seront déplacées de Dir1 à Dir2.

Télécharger les images de Dir2.