2016-07-01 3 views
-1

Я хочу загрузить файл на своем веб-сайте.Скачать файл в .Net MVC

Мой код:

var uploadPath = HttpContext.Current.Server.MapPath("~/Content/upload/products/"); 
var response = new HttpResponseMessage(); 

var stream =new FileStream(uploadPath + "\\" + fileName, FileMode.Open, FileAccess.Read); 
response.Headers.AcceptRanges.Add("bytes"); 
response.StatusCode = HttpStatusCode.OK; 
response.Content = new StreamContent(stream); 
response.Content.Headers.ContentDisposition = new ContentDispositionHeaderValue("attachment") 
{ 
    FileName = Path.GetFileName(uploadPath + "\\" + fileName) 
}; 
response.Content.Headers.ContentType = new MediaTypeHeaderValue("application/octet-stream"); 
return response; 

Но я не могу видеть прогресс загрузки файла в браузере. Пожалуйста, помогите мне!

+1

Говорить, что «он не работает» на самом деле не дает много возможностей для обеспечения причины и возможного решения. Вы получаете какую-то ошибку. Вы проверили ответное сообщение (\ w что-то вроде Fiddler). Пожалуйста, предоставьте [mcve] – Nkosi

ответ

0

В случае, если поток файлов закрывается до того, как ответ может быть возвращен, вы можете скопировать его в поток памяти и использовать его.

var uploadPath = HttpContext.Current.Server.MapPath("~/Content/upload/products/"); 

var stream = new FileStream(uploadPath + "\\" + fileName, FileMode.Open, FileAccess.Read); 
var memoryStream = new MemoryStream(); 
stream.CopyTo(memoryStream); 
//content length for header 
var contentLength = memoryStream.Length; 

var response = new HttpResponseMessage(); 
response.Headers.AcceptRanges.Add("bytes"); 
response.StatusCode = HttpStatusCode.OK; 
response.Content = new StreamContent(memoryStream); 
response.Content.Headers.ContentType = new MediaTypeHeaderValue("application/octet-stream"); 
response.Content.Headers.ContentLength = contentLength; 
response.Content.Headers.ContentDisposition = new ContentDispositionHeaderValue("attachment") 
{ 
    FileName = Path.GetFileName(uploadPath + "\\" + fileName) 
}; 


return response; 
+0

Я отредактировал свой код, но я не вижу прогресса загрузки файла в браузере. Это не работает –

Смежные вопросы