asp网站点击按钮下载文件服务器上的文件如何实现
环境:公司内网。ASP网站使用iis架设在http://192.168.3.30:8060上,用户需要登陆网站后点击下载按钮下载\\10.100.10.100\company文件服务器上的文件aaa.zip。求下载文件按钮事件的写法?
本人刚接手此网站的维护,PC地址在192.168.3.150,使用visual Studio 2010进行编写。找到CSDN大神分享的下载方式,代码如下:
//WriteFile分块下载
protected void Button3_Click(object sender, EventArgs e)
{
string fileName = "aaa.zip";//客户端保存的文件名
string filePath = @“\\10.100.10.100\company”+ fileName;
//↑此处原作者使用的是Server.MapPath("DownLoadpath"),但是如果我这样写本地调试会认为路径不存在
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();
iStream.Close();
Response.End();
}
else 弹出窗口:文件不存在
}
本地调试时是可以打开浏览器自带下载器并正常完成下载,只是文件较大时下载过程中页面其他按钮点击没有反应,猜想是因为没有使用异步下载?(VS2010应该也不支持异步下载吧?)
调试完成后将网站发布到服务器,然后远程登陆网站并点击下载按钮却会提示文件不存在。我有远程连接到服务器电脑并直接在资源管理器输入\\10.100.10.100是可以打开路径的。不知道为什么发布到服务器上会提示文件不存在。
总结问题:
1.代码发布到服务器上为何就无法实现下载了?如何修改?
2.如果可以请告诉我如何解决下载过程中页面按钮点击没有反应?