zoukankan      html  css  js  c++  java
  • 分部下载 kiddy

    View Code
     protected void Page_Load(object sender, EventArgs e)
        {
            try
            {
                //获取文件路径
                string filepath = Server.MapPath("xmsbry/upload/b/") + Request.QueryString["filename"];
                if (System.IO.File.Exists(filepath))
                {
                    Download(filepath); System.IO.File.Delete(filepath);
                }
                else
                {  
                    Response.Write("<script>alert('文件丢失,请联系管理员!');this.close();</script>");
                }
            }
            catch
            {
                //Response.Write("<script>alert('"+ex.ToString()+"');this.close();</script>");
            }
    
        }
    
    protected void Download(string filepath)
        {
            System.IO.Stream iStream = null;
    
            // Buffer to read 10K bytes in chunk:
            byte[] buffer = new Byte[10000];
    
            // Length of the file:
            int length;
    
            // Total bytes to read:
            long dataToRead;
    
            // Identify the file to download including its path. 
            // Identify the file name.
            string filename = System.IO.Path.GetFileName(filepath);
    
            try
            {
                // Open the file.
                iStream = new System.IO.FileStream(filepath, System.IO.FileMode.Open,
                System.IO.FileAccess.Read, System.IO.FileShare.Read);
    
    
                // Total bytes to read:
                dataToRead = iStream.Length;
    
                Response.ContentType = "application/octet-stream";
                Response.AddHeader("Content-Disposition", "attachment; filename=" + filename);
    
                // Read the bytes.
                while (dataToRead > 0)
                {
                    // Verify that the client is connected.
                    if (Response.IsClientConnected)
                    {
                        // Read the data in buffer.
                        length = iStream.Read(buffer, 0, 10000);
    
                        // Write the data to the current output stream.
                        Response.OutputStream.Write(buffer, 0, length);
    
                        // Flush the data to the HTML output.
                        Response.Flush();
    
                        buffer = new Byte[10000];
                        dataToRead = dataToRead - length;
                    }
                    else
                    {
                        //prevent infinite loop if user disconnects
                        dataToRead = -1;
                    }
                } 
            }
            catch (Exception ex)
            {
                // Trap the error, if any.
                Response.Write("Error : " + ex.Message);
            }
            finally
            {
                if (iStream != null)
                {
                    //Close the file.
                    iStream.Close();
                }
            }  
        }
  • 相关阅读:
    49. 字母异位词分组
    73. 矩阵置零
    Razor语法问题(foreach里面嵌套if)
    多线程问题
    Get json formatted string from web by sending HttpWebRequest and then deserialize it to get needed data
    How to execute tons of tasks parallelly with TPL method?
    How to sort the dictionary by the value field
    How to customize the console applicaton
    What is the difference for delete/truncate/drop
    How to call C/C++ sytle function from C# solution?
  • 原文地址:https://www.cnblogs.com/kongdf/p/2566451.html
Copyright © 2011-2022 走看看