C#中对文件的上传下载操作总结(下载后点击删除按钮总是提示进程被占用)
2014-03-17 18:39
567 查看
最近做项目时总是用到上传下载功能,网上搜了一下,这种功能很简单,所以没有把它当作一个难点,没想到后来经常碰到文件资源被占用的问题,文件“。。。。。。\Download\20142m10d417991a346.docx”正由另一进程使用,因此该进程无法访问此文件。下载代码如下:
protected void BtnTextLoad_Clik(string filePath, string fileName) { if (filePath != "" && fileName != "") { string a = Server.MapPath(filePath);//路径 // string fileNames = fileName + a.Substring(a.LastIndexOf("."), a.Length - a.LastIndexOf(".")); string filepath = a.Substring(0, a.LastIndexOf("view")) + filePath; 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(); } } else { Response.Write("<script type=\"text/javascript\">alert(\"下载的文件不存在!\");\"</script> "); }
查看代码,明明已经有Response.Close();来结束响应了。后来经过查找资料,发现还需关闭刚刚创建的iStream,即在Response.Close后面添加上iStream.Close().这么一个细节,花费了我近一天的时间。
iStream
相关文章推荐
- C# 文件操作(上传 下载 删除 文件列表...)
- net,C#,Ftp各种操作,上传,下载,删除文件,创建目录,删除目录,获得文件列表等
- C# 文件操作(上传 下载 删除 文件列表...)
- C# 文件操作(上传 下载 删除 文件列表...)
- C# 文件操作(上传 下载 删除 文件列表...)
- C#对FTP的操作(上传,下载,重命名文件,删除文件,文件存在检查)
- C# 文件操作(上传 下载 删除 文件列表...)
- C# 文件操作(上传 下载 删除 文件列表...)
- C# 文件操作(上传 下载 删除 文件列表...)
- net,C#,Ftp各种操作,上传,下载,删除文件,创建目录,删除目录,获得文件列表
- .net,C#,Ftp各种操作,上传,下载,删除文件,创建目录,删除目录,获得文件列表等
- c#ftp操作全解:创建删除目录,上传下载文件,删除移动文件,文件改名,文件目录查询
- C# 文件操作(上传 下载 删除 文件列表...)
- .net,C#,Ftp各种操作,上传,下载,删除文件,创建目录,删除目录,获得文件列表等
- C# 文件操作(上传 下载 删除 文件列表...)
- C#对FTP的操作(上传,下载,重命名文件,删除文件,文件存在检查)
- C# 文件操作(上传 下载 删除 文件列表)
- .net,C#,Ftp各种操作,上传,下载,删除文件,创建目录,删除目录,获得文件列表等(转)
- .net,C#,Ftp各种操作,上传,下载,删除文件,创建目录,删除目录,获得文件列表等 收藏
- .net,C#,Ftp各种操作,上传,下载,删除文件,创建目录,删除目录,获得文件列表等