2010-05-17 8 views
3

J'ai vu l'exemple de chargement Silverlight here référencé plusieurs fois sur ce site et ailleurs, mais j'ai une question de savoir si c'est vraiment sûr.Silverlight File Upload: est-il sécuritaire?

Revue rapide: Ce code est "collé" à un gestionnaire ASHX. UploadFileChunk() instancie un WebClient et utilise OpenWriteAsync et OpenWriteCompletedEventHandler pour envoyer des bits à partir d'un fichier. WebClient communique avec le gestionnaire à l'aide d'un URI avec deux paramètres QueryString: "filename" et "append". Après avoir écrit les bits d'un morceau dans le flux de sortie de WebClient, le gestionnaire d'événements vérifie si tous les bits ont été envoyés et, sinon, il appelle à nouveau UploadFileChunk() pour envoyer un autre fragment. Du côté serveur, le gestionnaire est simple - écrire les bits sur le disque en utilisant un FileStream, en ajoutant si append = 1 et en créant à nouveau si append = 0.

Cette architecture semble très susceptible de causer des problèmes. Le serveur a-t-il la garantie d'avoir fini d'écrire les bits et de fermer le flux de fichiers avant qu'il ne reçoive la requête suivante et commence à ajouter des bits du morceau suivant? Ma compréhension du OpenWriteCompletedEventHandler du côté de Silverlight est que lorsque vous terminez l'opération d'écriture et fermez le flux, cela ne signifie pas nécessairement que les bits ont encore été envoyés sur le fil, et encore moins été traités par le gestionnaire côté serveur.

Merci!

Répondre

1

Si vous avez des préoccupations au sujet du téléchargement de fichiers plus importants (j'ai vu des rapports de problèmes avec des fichiers très volumineux), essayez l'un des libres Silverlight ouvrir le fichier source uploaders like this one