ASP.Net MVC – Lire un fichier depuis HttpPostedFileBase sans enregistrer

Je télécharge le fichier en utilisant l’option de téléchargement de fichier. Et je suis directement envoyer ce fichier de View to Controller dans la méthode POST comme,

[HttpPost] public ActionResult Page2(FormCollection objCollection) { HttpPostedFileBase file = Request.Files[0]; } 

Supposons que je télécharge un fichier de bloc-notes. Comment puis-je lire ce fichier et append ce texte au constructeur de chaîne, sans enregistrer ce fichier ….

Je suis au courant après que SaveAs ce fichier, nous pouvons lire ce fichier. Mais comment lire ce fichier depuis HttpPostedFileBase sans enregistrer?

Cela peut être fait en utilisant la classe httpPostedFileBase qui retourne le HttpInputStreamObject comme spécifié ici

Vous devez convertir le stream en tableau d’octets et lire le contenu du fichier

S’il vous plaît se référer au lien suivant

http://msdn.microsoft.com/en-us/library/system.web.httprequest.inputstream.aspx ]

J’espère que cela t’aides

METTRE À JOUR :

Le stream que vous obtenez de votre appel HTTP est séquentiel en lecture seule (non recherchable) et le FileStream est lisible / écriture. Vous devrez d’abord lire le stream entier de l’appel HTTP dans un tableau d’octets, puis créer le FileStream à partir de ce tableau.

Prise d’ ici

 // Read bytes from http input stream BinaryReader b = new BinaryReader(file.InputStream); byte[] binData = b.ReadBytes(file.ContentLength); ssortingng result = System.Text.Encoding.UTF8.GetSsortingng(binData); 

Une alternative consiste à utiliser StreamReader.

 public void FunctionName(HttpPostedFileBase file) { ssortingng result = new StreamReader(file.InputStream).ReadToEnd(); } 

Un léger changement dans la réponse de Thangamani Palanisamy, qui permet d’éliminer le lecteur binary et de corriger le problème de longueur de saisie dans ses commentaires.

 ssortingng result = ssortingng.Empty; using (BinaryReader b = new BinaryReader(file.InputStream)) { byte[] binData = b.ReadBytes(file.ContentLength); result = System.Text.Encoding.UTF8.GetSsortingng(binData); }