杨的空间
业精于勤,荒于嬉,行成于思,毁于随
 1   System.IO.Stream iStream = null
 2    
 3    // Buffer to read 10K bytes in chunk: 
 4    byte[] buffer = new Byte[10240]; 
 5    
 6    // Length of the file: 
 7    int length; 
 8    
 9    // Total bytes to read: 
10    long dataToRead; 
11    
12    // Identify the file to download including its path. 
13    string filepath = @"E:\software\SQL Server 2000 Personal Edition.ISO"
14    
15    // Identify the file name. 
16    string filename = System.IO.Path.GetFileName(filepath); 
17    
18    try 
19    { 
20    // Open the file. 
21    iStream = new System.IO.FileStream(filepath, System.IO.FileMode.Open, 
22    System.IO.FileAccess.Read,System.IO.FileShare.Read); 
23    Response.Clear(); 
24    
25    // Total bytes to read: 
26    dataToRead = iStream.Length; 
27    
28    long p = 0
29    if(Request.Headers["Range"]!=null
30    { 
31    Response.StatusCode = 206
32    p = long.Parse( Request.Headers["Range"].Replace("bytes=","").Replace("-","")); 
33    } 
34    if(p != 0
35    { 
36    Response.AddHeader("Content-Range","bytes " + p.ToString() + "-" + ((long)(dataToRead - 1)).ToString() + "/" + dataToRead.ToString()); 
37    } 
38    Response.AddHeader("Content-Length",((long)(dataToRead-p)).ToString()); 
39    Response.ContentType = "application/octet-stream"
40    Response.AddHeader("Content-Disposition""attachment; filename=" + System.Web.HttpUtility.UrlEncode(Request.ContentEncoding.GetBytes(filename))); 
41    
42    iStream.Position = p; 
43    dataToRead = dataToRead - p; 
44    // Read the bytes. 
45    while (dataToRead > 0
46    { 
47    // Verify that the client is connected. 
48    if (Response.IsClientConnected) 
49    { 
50    // Read the data in buffer. 
51    length = iStream.Read(buffer, 010240); 
52    
53    // Write the data to the current output stream. 
54    Response.OutputStream.Write(buffer, 0, length); 
55    
56    // Flush the data to the HTML output. 
57    Response.Flush(); 
58    
59    buffer= new Byte[10240]; 
60    dataToRead = dataToRead - length; 
61    } 
62    else 
63    { 
64    //prevent infinite loop if user disconnects 
65    dataToRead = -1
66    } 
67    } 
68    } 
69    catch (Exception ex) 
70    { 
71    // Trap the error, if any. 
72    Response.Write("Error : " + ex.Message); 
73    } 
74    finally 
75    { 
76    if (iStream != null
77    { 
78    //Close the file. 
79    iStream.Close(); 
80    } 
81    Response.End(); 
82    } 
83 
posted on 2007-03-20 17:44 阅读(368) 评论(0)  编辑 收藏 引用 所属分类: 技术类
只有注册用户登录后才能发表评论。