2013-08-26 7 views
3

Вот мой код Я пробовал следующий способ разместить функциональность для загрузки файла, но он не работает должным образом. Он не показывает диалог сохранения файла.MVC 4 Загрузить файл

protected virtual FileResult Download(string FileName, string FilePath) 
{ 

     Response.AppendHeader("Content-Length", FileName.Length.ToString()); 
     return File(FilePath, "application/exe", FileName); 
} 

И попробовал этот способ также:

protected virtual ActionResult Download(string FileName, string FilePath) 
{ 
    Response.Clear(); 
    Response.AppendHeader("Content-Disposition", "attachment; filename=" + FileName); 
    Response.AppendHeader("Content-Length", FileName.Length.ToString()); 
    Response.ContentType = "application//x-unknown"; 
    Response.WriteFile(FilePath.Replace("\\", "/")); 
    Response.Flush(); 
    Response.End(); 
} 

Но оба не работают. Что мне не хватает?

+0

Я надеюсь, что вы осведомлены о проблемах безопасности ваших FilePath и имя файла переменные приходят вместе с ... – TGlatzer

+0

длиной имени файла! = Content длиной. Кроме того, его вероятные браузеры блокируют исполняемую загрузку. Я знаю, что мой IE делает ... и Chrome забрасывает «вы абсолютно уверены»? Незамедлительный. –

+0

Посмотрите этот же вопрос: http://stackoverflow.com/questions/3604562/download-file-of-any-type-in-asp-net-mvc-using-fileresult –

ответ

4

я не знаю, главное различие, но следующий код работает отлично для меня для любого файла Возможно, из-за ContentType в соответствии с предложением @Garath.

var fileInfo = new System.IO.FileInfo(oFullPath); 
      Response.ContentType = "application/octet-stream"; 
      Response.AddHeader("Content-Disposition", String.Format("attachment;filename=\"{0}\"", yourfilename)); 
      Response.AddHeader("Content-Length", fileInfo.Length.ToString()); 
      Response.WriteFile(oFullPath); 
      Response.End(); 
2

Правильный mimitype для ехе файла application/octet-stream не application/exe или application//x-unknown - check MSDN Вы можете посмотреть здесь больше определений: Get MIME type from filename extension

+0

Я получаю все правильно, но проблема в том, что только файлы txt загружаются, но файлы doc или файлы PDF загружаются, но в поврежденном формате. –

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