On the View:
<div class="display-label">SVN</div> <div class="display-field"> @Html.ActionLink(Model.SVN, "FileStreamDownload", new { url = Model.SVN }) </div>
On the Controller:
public ActionResult FileStreamDownload(string url) { string fileType = string.Empty; string ext = System.IO.Path.GetExtension(url).ToLower(); string fileName = System.IO.Path.GetFileName(url); switch (ext) { case ".pdf": fileType = "application/x-zip-compressed"; break; case ".txt": fileType = "application/x-zip-compressed"; break; case ".xls": fileType = "application/vnd.ms-excel"; break; case ".ppt": fileType = "application/vnd.ms-powerpoint"; break; case ".xlsx": fileType = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"; break; case ".pptx": fileType = "application/vnd.openxmlformats-officedocument.presentationml.presentation"; break; case ".docx": fileType = "application/vnd.openxmlformats-officedocument.wordprocessingml.document"; break; default : break; } var stream = new WebClient().OpenRead(url); return File(stream, fileType, fileName); }
for extension:
Here are the correct mimetypes:
Extension MIME Type
.xlsx application/vnd.openxmlformats-officedocument.spreadsheetml.sheet
.xltx application/vnd.openxmlformats-officedocument.spreadsheetml.template
.potx application/vnd.openxmlformats-officedocument.presentationml.template
.ppsx application/vnd.openxmlformats-officedocument.presentationml.slideshow
.pptx application/vnd.openxmlformats-officedocument.presentationml.presentation
.sldx application/vnd.openxmlformats-officedocument.presentationml.slide
.docx application/vnd.openxmlformats-officedocument.wordprocessingml.document
.dotx application/vnd.openxmlformats-officedocument.wordprocessingml.template
.xlam application/vnd.ms-excel.addin.macroEnabled.12
.xlsb application/vnd.ms-excel.sheet.binary.macroEnabled.12