public ActionResult DownLoadAttachment(string attachmentId) { Attachment attachment = _customerInfoService.GetAttachment(attachmentId); if (attachment != null) { try { string fileName = attachment.FileName; string filePath = attachment.Path; string fileType = attachment.FileType; #region 流方式下载文件 Encoding encoding; string outputFileName = null; fileName = fileName.Replace("'", ""); string browser = Request.UserAgent.ToUpper(); if (browser.Contains("MS") == true && browser.Contains("IE") == true) { outputFileName = HttpUtility.UrlEncode(fileName); encoding = Encoding.Default; } else if (browser.Contains("FIREFOX") == true) { outputFileName = fileName; encoding = Encoding.GetEncoding("GB2312"); } else { outputFileName = HttpUtility.UrlEncode(fileName); encoding = Encoding.Default; } FileStream fs = new FileStream(filePath, FileMode.Open); long length = fs.Length; byte[] bytes = new byte[(int)fs.Length]; fs.Read(bytes, 0, bytes.Length); fs.Close(); Response.Charset = "UTF-8"; Response.ContentType = "application/octet-stream"; Response.ContentEncoding = encoding; Response.AddHeader("Content-Disposition", "attachment; filename=" + outputFileName); Response.BinaryWrite(bytes); Response.Flush(); Response.End(); return new EmptyResult(); #endregion } catch (Exception ex) { return Content(string.Format("附件下载失败!错误信息:{0}", ex.Message)); } } else { return Content("附件不存在!"); } }
ASP.NET Core 中的fileresult对象
[HttpGet("DownLoadAttachment")] public FileResult DownLoadAttachment(string attachmentId) { Attachment attachment = _customerInfoService.GetAttachment(attachmentId); string fileName = attachment.FileName; string filePath = attachment.Path; string fileType = attachment.FileType; if (!System.IO.File.Exists(filePath)) return null; var stream = System.IO.File.OpenRead(filePath); //创建文件流 return File(stream, fileType, fileName); }