2011-03-08 3 views
3

Est-il possible de connaître la taille de la pièce jointe envoyée dans un e-mail dans asp.net C#?Obtenir la taille des pièces jointes dans asp.net

merci!

+1

Comment l'e-mail est-il envoyé? Comment la pièce jointe est-elle ajoutée à l'e-mail? –

+0

Je déteste les questions qui ont la réponse logique "Oui". – Lazarus

+0

@Lazarus: laissez-moi savoir comment c'est "Oui"? –

Répondre

4

Si vous utilisez System.Net.Mail et attacher le fichier via la classe Attachment, chaque pièce jointe doit avoir une propriété ContentStream contenant le fichier réel. Cette propriété, de type Stream, a une propriété Length (de type long) qui donne la taille du fichier en octets.

0

Je crois que vous pouvez utiliser la classe HttpFileCollection. Il vous donne accès à tous les fichiers téléchargés par le client. Voici le msdn link

1

Typiquement, les pièces jointes sont codées en base64 dans System.Net.Mail. Le codage base64 prend 3 octets et les convertit en 4 octets. Ce que vous devez faire est de déterminer la longueur de la pièce jointe (soit Stream.Length, la longueur de byte [], ou la longueur du fichier), et le diviser par 0,75.

Cela vous donnera la taille de la pièce jointe, base64 codé pour SMTP.

+0

Le nombre est une approximation, car la version 'base64' devrait toujours être un multiple de 4 octets. Il ne sera pas difficile d'ajuster cela dans le calcul; pad vers le haut jusqu'à la prochaine même 4 octets. De plus, pour le courrier électronique, il y aura un retour à la ligne (deux octets si vous avez des fins de ligne CRLF) pour environ 68 caractères de base64, dépendant légèrement de la façon dont votre encodeur base64 est configuré et implémenté. – tripleee

Questions connexes