MVC下载文件方式 包括网络地址文件

方式一:

public FileStreamResult DownFile(string filePath, string fileName)
{
      string absoluFilePath = Server.MapPath(System.Configuration.ConfigurationManager.AppSettings["AttachmentPath"] +      filePath);
       return File(new FileStream(absoluFilePath, FileMode.Open), "application/octet-stream", Server.UrlEncode(fileName));
}

 

 

 

方式二:

 

public ActionResult DownFile(string filePath, string fileName)
{
filePath = Server.MapPath(System.Configuration.ConfigurationManager.AppSettings["AttachmentPath"] + filePath);
FileStream fs = new FileStream(filePath, FileMode.Open);
byte[] bytes = new byte[(int)fs.Length];
fs.Read(bytes, 0, bytes.Length);
fs.Close();
Response.Charset = "UTF-8";
Response.ContentEncoding = System.Text.Encoding.GetEncoding("UTF-8");
Response.ContentType = "application/octet-stream";

Response.AddHeader("Content-Disposition", "attachment; filename=" + Server.UrlEncode(fileName));
Response.BinaryWrite(bytes);
Response.Flush();
Response.End();
return new EmptyResult();

}

 

View调用:

<href="/Document/DownFile?filePath=@item.Value&fileName=@item.Key">下载</a>  

 

方法三(此法工作中遇到、现加到笔记中)

此方式针对只有一个网络地址的文件、非本地文件,

WebClient webclient = new WebClient();
byte[] bytedata = webclient.DownloadData(urls);
Response.ContentType = "Application/plain";
Response.AddHeader("Content-Disposition", "attachment; filename="+ mif.ManualTitle +"."+ ext);
this.Response.Clear();
Stream stream = this.Response.OutputStream;
stream.Write(bytedata, 0, bytedata.Length);
stream.Close();
this.Response.End();
return new EmptyResult();

posted @ 2017-05-04 16:29  多加些蜂蜜  阅读(357)  评论(0编辑  收藏  举报