texto - sobrescribir archivo c#
Carga de archivos WebAPI: sin escribir archivos en el disco (1)
Resuelto
Utilice el MultipartMemoryStreamProvider
simple existente. No se requieren clases o proveedores personalizados. Esto difiere de la pregunta duplicada que resolvió la solución escribiendo un proveedor personalizado.
A continuación, utilícelo en un controlador WebAPI de la siguiente manera:
public async Task<IHttpActionResult> UploadFile()
{
if (!Request.Content.IsMimeMultipartContent())
{
return StatusCode(HttpStatusCode.UnsupportedMediaType);
}
var filesReadToProvider = await Request.Content.ReadAsMultipartAsync();
foreach (var stream in filesReadToProvider.Contents)
{
var fileBytes = await stream.ReadAsByteArrayAsync();
}
}
Toda la documentación / tutoriales / preguntas sobre el procesamiento de un archivo cargado con FormData a un manejador WebAPI de ASP.NET usa MultipartFormDataStreamProvider
para procesar la secuencia de varias partes para dividirla en los campos y archivos de formulario relevantes.
var root = HttpContext.Current.Server.MapPath("~/App_Data");
var provider = new MultipartFormDataStreamProvider(root);
await Request.Content.ReadAsMultipartAsync(provider);
foreach (MultipartFileData file in provider.FileData)
{
// File
}
Sin embargo, los archivos se escriben automáticamente en un directorio durante el proceso.
Parece una gran molestia cuando puedo usar HttpContext.Current.Request.Files[0].InputStream
para acceder HttpContext.Current.Request.Files[0].InputStream
a una secuencia de archivos dada en la memoria.
¿Cómo puede acceder WebAPI directamente a la secuencia de archivos sin la sobrecarga IO de usar MultipartFormDataStreamProvider
?
Tutorial oficial: http://www.asp.net/web-api/overview/advanced/sending-html-form-data,-part-2