net mvc example bytes asp array file c#-4.0 file-io asp.net-mvc-2 stream

mvc - httppostedfilebase properties



ASP.Net MVC-Leer archivo de HttpPostedFileBase sin guardar (3)

Estoy cargando el archivo usando la opción de carga de archivos. Y envié directamente este archivo desde la Vista al controlador en el método POST, como

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

Supongamos que estoy cargando un archivo de bloc de notas. ¿Cómo leo este archivo y añado este texto al generador de cadenas ?, sin guardar ese archivo ...

Soy consciente de que después de SaveAs este archivo, podemos leer este archivo. Pero, ¿cómo leo este archivo desde HttpPostedFileBase sin guardar?


Esto se puede hacer usando la clase httpPostedFileBase devuelve el HttpInputStreamObject como se especifica here

Debe convertir la secuencia en una matriz de bytes y luego puede leer el contenido del archivo

Por favor, consulte el siguiente enlace

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

Espero que esto ayude

ACTUALIZAR:

La transmisión que obtiene de su llamada HTTP es de solo lectura secuencial (no buscable) y FileStream es de lectura / escritura buscable. Primero deberá leer todo el flujo de la llamada HTTP en una matriz de bytes y luego crear FileStream a partir de esa matriz.

Tomado de here

// 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 ligero cambio en la respuesta de Thangamani Palanisamy, que permite eliminar el lector binario y corrige el problema de la longitud de entrada en sus comentarios.

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


Una alternativa es usar StreamReader.

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