Can I implement file upload using MVC4 ApiController?

Using a regular controller, I could do this by returning a FileResult. The same does not seem to work with ApiController. It can be done? Is this even the right thing?

+8
asp.net-mvc-4
source share
2 answers

Try it.

[HttpGet] public HttpResponseMessage Get() { var file = HttpContext.Current.Server.MapPath("~/Images/accent.png"); var stream = new FileStream(file, FileMode.Open); var content = new HttpResponseMessage(HttpStatusCode.OK) { Content = new StreamContent(stream) }; content.Content.Headers.ContentType = new MediaTypeHeaderValue("application/octet-stream"); return content; } 
+6
source share

This works for me thanks to this question .

 using System.Net; using System.Net.Http; using System.Net.Http.Headers; using System.Web.Http; namespace Web.Controllers { //usage: /download/report [RoutePrefix("download")] public class DownloadController : ApiController { [HttpGet("report")] public HttpResponseMessage Report() { using (var service = new Client()) { var report = service.BuildReport(); return DownloadResponse(report, "Report.csv"); } } private static HttpResponseMessage DownloadResponse(string content, string fileName) { var downloadContent = new StringContent(content); var mediaType = new MediaTypeHeaderValue("application/octet-stream"); var disposition= new ContentDispositionHeaderValue("attachment") { FileName = fileName }; downloadContent.Headers.ContentType = mediaType; downloadContent.Headers.ContentDisposition = disposition; var result = new HttpResponseMessage(HttpStatusCode.OK) { Content = downloadContent }; return result; } } } 
+4
source share

All Articles