下面的功能是正确的,但是,我想将文件地址传到一个新的页面,而该页面一打开就开始下载,
可是,我一把下载功能的函数加到page_load中,该页面就自动关闭!但是我如果我在该页面添加一按钮,然后通过该按钮来执行该下载功能就正确了!但是我不想这样,我想该网页一打开就执行下载下载,一下载完成,就自动关闭。
string file = this.Label6.Text;
FileInfo fl = new FileInfo(file);
if (fl.Exists == true)
{
const long ChunkSize = 102400;//100K 每次读取文件,只读取100K,这样可以缓解服务器的压力
byte[] buffer = new byte[ChunkSize];
Response.Clear();
System.IO.FileStream iStream = System.IO.File.OpenRead(file);
long dataLengthToRead = iStream.Length;//获取下载的文件总大小
Response.ContentType = "application/octet-stream";
Response.AddHeader("Content-Disposition", "attachment; filename=" + HttpUtility.UrlEncode(fl.Name.ToString(), System.Text.Encoding.UTF8));
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();
}
可是,我一把下载功能的函数加到page_load中,该页面就自动关闭!但是我如果我在该页面添加一按钮,然后通过该按钮来执行该下载功能就正确了!但是我不想这样,我想该网页一打开就执行下载下载,一下载完成,就自动关闭。
string file = this.Label6.Text;
FileInfo fl = new FileInfo(file);
if (fl.Exists == true)
{
const long ChunkSize = 102400;//100K 每次读取文件,只读取100K,这样可以缓解服务器的压力
byte[] buffer = new byte[ChunkSize];
Response.Clear();
System.IO.FileStream iStream = System.IO.File.OpenRead(file);
long dataLengthToRead = iStream.Length;//获取下载的文件总大小
Response.ContentType = "application/octet-stream";
Response.AddHeader("Content-Disposition", "attachment; filename=" + HttpUtility.UrlEncode(fl.Name.ToString(), System.Text.Encoding.UTF8));
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();
}
怎么实现一进入页面就自动下载啊!