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();
}