ASP.Net MVC – Leggi file da HttpPostedFileBase senza salvare

Sto caricando il file utilizzando l’opzione di caricamento del file. E invio direttamente questo file da Visualizza a Controller in modalità POST come,

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

Supponiamo, sto caricando un file del blocco note. Come leggo questo file e aggiungo questo testo al generatore di stringhe ,, senza salvare quel file ….

Sono a conoscenza dopo SaveAs questo file, possiamo leggere questo file. Ma come leggo questo file da HttpPostedFileBase senza salvare?

Questo può essere fatto usando la class httpPostedFileBase restituisce HttpInputStreamObject come specificato qui

Dovresti convertire il stream in array di byte e quindi puoi leggere il contenuto del file

Si prega di fare riferimento al seguente link

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

Spero che questo ti aiuti

AGGIORNARE :

Lo stream che ottieni dalla tua chiamata HTTP è sequenziale di sola lettura (non ricercabile) e FileStream è ricercabile in lettura / scrittura. Sarà necessario prima leggere l’intero stream dalla chiamata HTTP in una matrice di byte, quindi creare il FileStream da quella matrice.

Preso da qui

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

Un’alternativa è usare StreamReader.

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

Una leggera modifica alla risposta di Thangamani Palanisamy, che consente al lettore binario di essere smaltito e corregge il problema della lunghezza dell’input nei suoi commenti.

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