zoukankan      html  css  js  c++  java
  • api下载文件

    net 

           /// <summary>
           ///字符流下载方法
           /// </summary>
           /// <param name="fileName">下载文件生成的名称</param>
           /// <param name="fPath">下载文件路径</param>
           /// <returns></returns>
            public void DownloadFile(string fileName, string fPath)
            {
                string filePath = Server.MapPath(fPath);//路径
                //以字符流的形式下载文件
                FileStream fs = new FileStream(filePath, FileMode.Open);
                byte[] bytes = new byte[(int)fs.Length];
                fs.Read(bytes, 0, bytes.Length);
                fs.Close();
                Response.ContentType = "application/octet-stream";
                //通知浏览器下载文件而不是打开
                Response.AddHeader("Content-Disposition", "attachment;   filename=" + HttpUtility.UrlEncode(fileName, System.Text.Encoding.UTF8));
               // 添加头信息,指定文件大小,让浏览器能够显示下载进度
               Response.AddHeader("Content-Length", file.Length.ToString());
    
                Response.BinaryWrite(bytes);
                Response.Flush();
                Response.End();
            }
    字符流下载方法

    WriteFile实现下载 

    string fileName ="aaa.zip";//客户端保存的文件名 
      string filePath=Server.MapPath("DownLoad/aaa.zip");//路径 
    
      FileInfo fileInfo = new FileInfo(filePath); 
      Response.Clear(); 
      Response.ClearContent(); 
      Response.ClearHeaders(); 
      Response.AddHeader("Content-Disposition", "attachment;filename=" + fileName); 
      Response.AddHeader("Content-Length", fileInfo.Length.ToString()); 
      Response.AddHeader("Content-Transfer-Encoding", "binary"); 
      Response.ContentType = "application/octet-stream"; 
      Response.ContentEncoding = System.Text.Encoding.GetEncoding("gb2312"); 
      Response.WriteFile(fileInfo.FullName); 
      Response.Flush(); 
      Response.End(); 
    View Code
    Response.TransmitFile(filePath);

    WriteFile分块下载 

    string fileName = "aaa.zip";//客户端保存的文件名 
      string filePath = Server.MapPath("DownLoad/aaa.zip");//路径 
    
      System.IO.FileInfo fileInfo = new System.IO.FileInfo(filePath); 
    
      if (fileInfo.Exists == true) 
      { 
      const long ChunkSize = 102400;//100K 每次读取文件,只读取100K,这样可以缓解服务器的压力 
      byte[] buffer = new byte[ChunkSize]; 
    
      Response.Clear(); 
      System.IO.FileStream iStream = System.IO.File.OpenRead(filePath); 
      long dataLengthToRead = iStream.Length;//获取下载的文件总大小 
      Response.ContentType = "application/octet-stream"; 
      Response.AddHeader("Content-Disposition", "attachment; filename=" + HttpUtility.UrlEncode(fileName)); 
      while (dataLengthToRead > 0 && Response.IsClientConnected)  
      { 
      int lengthRead = iStream.Read(buffer, 0, Convert.ToInt32(ChunkSize));//读取的大小 
      Response.OutputStream.Write(buffer, 0, lengthRead); 
      Response.Flush(); 
      dataLengthToRead = dataLengthToRead - lengthRead; 
      } 
      Response.Close(); 
      } 
    View Code

    WEBAPI

            public HttpResponseMessage DownloadByPath(string filePath)
            {
                try
                {
                    if (!File.Exists(filePath))
                    {
                        filePath = MapPath(filePath);
                        if (!File.Exists(filePath))
                        {
                            throw new HttpResponseException(HttpStatusCode.NotFound);
                        }
                    }
    
                    FileStream fileStream = new FileStream(filePath, FileMode.Open);
                    HttpResponseMessage fullResponse = Request.CreateResponse(HttpStatusCode.OK);
                    fullResponse.Content = new StreamContent(fileStream);
    
                    MediaTypeHeaderValue _mediaType = MediaTypeHeaderValue.Parse("application/octet-stream");//指定文件类型
                    ContentDispositionHeaderValue _disposition = ContentDispositionHeaderValue.Parse("attachment;filename=" + System.Web.HttpUtility.UrlEncode(Path.GetFileName(filePath)));//指定文件名称 System.Web.HttpUtility.UrlEncode 不加失败
    
                    fullResponse.Content.Headers.ContentType = _mediaType;
                    fullResponse.Content.Headers.ContentDisposition = _disposition;
                    return fullResponse;
                }
                catch (Exception ex)
                {
                    Logger.Error(ex);
                    throw new HttpResponseException(HttpStatusCode.NotFound);
                }
            }
    View Code

     System.Web.HttpUtility.UrlEncode 出错更改

    fullResponse.Content.Headers.ContentDisposition = new ContentDispositionHeaderValue("attachment") { FileName = docName };
                            var url = API接口;
                            let link = document.createElement('a');
                            link.href = url;
                            link.target = "_blank";
                            link.click();
                            window.URL.revokeObjectURL(link.href);
    js

    API 传输数据加密

  • 相关阅读:
    Java实现 LeetCode 30 串联所有单词的子串
    Java实现 LeetCode 29 两数相除
    Java实现 LeetCode 29 两数相除
    Java实现 LeetCode 29 两数相除
    Java实现 LeetCode 28 实现strStr()
    Java实现 LeetCode 28 实现strStr()
    Java实现 LeetCode 28 实现strStr()
    Java实现 LeetCode 27 移除元素
    Java实现 LeetCode 27 移除元素
    字符编码终极笔记:ASCII、Unicode、UTF-8、UTF-16、UCS、BOM、Endian
  • 原文地址:https://www.cnblogs.com/love201314/p/10147768.html
Copyright © 2011-2022 走看看