zoukankan      html  css  js  c++  java
  • mvc根据绝对路径下载文件

      首先页面需要一个a标签直接指向下载文件的Action并传值:图片地址,以及图片名称(记住要带后缀名的).

      然后是Action里面的代码.

            /// <summary>
            /// 根据文件地址下载文件
            /// </summary>
            /// <param name="fileUrl">图片完整路径</param>
            /// <param name="fileName">图片名称</param>
            /// <returns></returns>
            public ActionResult DownloadFile(string fileUrl, string fileName)
            {
                var _buffer = SiteHelper.DownloadFile(fileUrl);
                
                return File(_buffer, MimeMapping.GetMimeMapping(fileUrl), fileName);
            }

      SiteHelper.DownloadFile(fileUrl)方法是根据路径,请求出文件流,然后返回出来.

      MimeMapping.GetMimeMapping()方法是返回映射指定的文件名的MIME.

      fileName就是文件的完整名称.(注意后缀名:.jpg.txt.png等等).  

      下面贴出SiteHelper.DownloadFile()代码:

            /// <summary>
            /// 根据文件地址返回文件流
            /// </summary>
            /// <param name="fileUrl">文件地址</param>
            /// <returns></returns>
            public static byte[] DownloadFile(string fileUrl)
            {
                //创建一个请求对象
                HttpWebRequest request = (HttpWebRequest)WebRequest.Create(fileUrl);
                //超时时间
                request.Timeout = 60000;
                //获取回写流
                WebResponse response = request.GetResponse();
    
                byte[] buffer = new byte[1024];
    
                int actual = 0;
                using (Stream s = response.GetResponseStream())
                {
                    //先保存到内存流中MemoryStream
                    MemoryStream ms = new MemoryStream();
                    while ((actual = s.Read(buffer, 0, 1024)) > 0)
                    {
                        ms.Write(buffer, 0, actual);
                    }
    
                    ms.Position = 0;
                    //再从内存流中读取到byte数组中
                    buffer = ms.ToArray();
                }
    
                return buffer;
            }

      这个循环是为了取出完整的文件而写(文件太大,有可能一次并没有取完).

      最后结果:

      

  • 相关阅读:
    2018个人面试记录
    如何用纯代码实现图片CSS3
    JS数组删除
    JS数组去重
    HTML--使用提交按钮,提交数据
    HTML--使用下拉列表框进行多选
    HTML--使用下拉列表框,节省空间
    HTML--使用单选框、复选框,让用户选择
    HTML--文本域,支持多行文本输入
    HTML--文本输入框、密码输入框
  • 原文地址:https://www.cnblogs.com/yan0720/p/9711390.html
Copyright © 2011-2022 走看看