• 下载文件的方法


    /// <summary>
    /// 从服务器下载文件到客户端
    /// </summary>
    /// <param name="filepath">要下载文件的绝对物理路径</param>
    public static void OutputFileToClient(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;
        
    //得到文件名
        string filename = System.IO.Path.GetFileName(filepath);
        
    //当前 http 上下文
        HttpContext context = HttpContext.Current;
        
    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;

            context.Response.ContentType 
    = "application/octet-stream";
            context.Response.AddHeader(
    "Content-Disposition""attachment; filename=" + filename);

            
    // Read the bytes.
            while (dataToRead > 0)
            {
                
    // Verify that the client is connected.
                if (context.Response.IsClientConnected)
                {
                    
    // Read the data in buffer.
                    length = iStream.Read(buffer, 010000);

                    
    // Write the data to the current output stream.
                    context.Response.OutputStream.Write(buffer, 0, length);

                    
    // Flush the data to the HTML output.
                    context.Response.Flush();

                    buffer 
    = new Byte[10000];
                    dataToRead 
    = dataToRead - length;
                }
                
    else
                {
                    
    //prevent infinite loop if user disconnects
                    dataToRead = -1;
                }
            }
        }
        
    catch (Exception ex)
        {
            
    throw ex;
        }
        
    finally
        {
            
    if (iStream != null)
            {
                
    //Close the file.
                iStream.Close();
                
    //删除服务器上的文件
                System.IO.File.Delete(filepath);
            }
            
    //结束输出流
            context.Response.Close();
        }
    }
  • 相关阅读:
    每行显示多少个
    CentOS挂载NTFS格式硬盘
    BAT教程 :第一节(批处理基础)
    BAT教程 第三节(FOR命令中的变量)
    BAT教程 :第二节(for命令详解 )
    USB设备读取的相关问题
    BAT教程 :第四节(批处理中的变量)
    内核级HOOK的几种实现与应用
    书籍链接
    BAT教程 :第五节(set命令详解)
  • 原文地址:https://www.cnblogs.com/skyshenwei/p/1677120.html
Copyright © 2020-2023  润新知