Obtenir un exemplaire original de nom de fichier lors du téléchargement avec WebClient
Est-il possible de connaître l'origine le nom d'un fichier que vous téléchargez en utilisant le client web lorsque l'Uri ne contient pas le nom?
Ce qui se passe par exemple dans les sites où le téléchargement est originaire d'une page dynamique où le nom n'est pas connu à l'avance.
À l'aide de mon navigateur, le fichier est le orrect nom. Mais comment cela peut-il être fait en utilisant le client web?
E. g.
WebClient wc= new WebClient();
var data= wc.DownloadData(@"www.sometime.com\getfile?id=123");
À l'aide de DownloadFile() n'est pas une solution, car cette méthode a besoin d'un nom de fichier à l'avance.
- Avez-vous essayé de vérifier
wc.ResponseHeaders
? Les téléchargements de fichiers contiennent généralement une pièce jointe en-tête le nom de fichier. - Tobberoth. C'est en effet la réponse! Ne le savais pas. Je vous remercie beaucoup!
Vous devez vous connecter pour publier un commentaire.
Vous devez examiner les en-têtes de réponse et de voir si il y a une-tête content-disposition actuelle qui comprend le nom réel du fichier.
System.Net.Mime.ContentDisposition
peut être utilisé pour analyser l'en-têtevar header = new ContentDisposition(wc.ResponseHeaders["Content-Disposition"]);
Lire l'en-Tête de Réponse
"Content-Disposition"
avec WebClient.ResponseHeadersIl devrait être:
votre code devrait ressembler à:
Pour obtenir le nom de fichier sans avoir à télécharger le fichier:
Si vous, comme moi, avoir à traiter avec un Contenu en-tête de Disposition qui n'est pas formaté correctement ou ne peuvent pas être analysés automatiquement par le ContentDisposition classe pour une raison quelconque, voici ma solution :