Skip to main content

asp.net下载大文件

为了对用户的权限进行控制等原因,下在文件的时候一般不直接给出文件连接,而是在后台代码中使用Response进行输出。对于一般的文件可以使用:

Response.Clear();
Response.WriteFile(_FilePath);
Response.End();

来输出文件。Response.WriteFile()方法,将会把整个文件载入内存,再输出。所以当文件大小在200M以上的时候(根据服务器配置有所差别)很容易出现下载失败,但我们可以时候:

Response.Clear();
int bufSize = 1000;
byte[] buf = new byte[bufSize];
FileStream fs = new FileStream(_filePath);
int len = fs.Length;
while (len > 0)
{
int lenRead = fs.Read(buf, 0, bufSize);
Response.OutputStream.Write(buf, 0, lenRead);
Response.Flush();
len = len - lenRead;
}

fs.Close();

Response.Close();

如果你是用的是.net 2.0就更简单:

Response.Clear();
Response.TransmitFile(path);
Response.End();

Comments

Popular posts from this blog

Python中的self

习惯上,任何Python类方法的第一个参数(对当前实例d的引用)都叫做self。这个参数扮演着C++或Java中的保留字this的角色,但self在Python中并不是一个保留字,它只是一个命名习惯。虽然如此,也请除了self之外不要使用其它的名字,这是一个非常坚固的习惯。 出自:《Dive Into Python》

Google Notebook整合了Google 书签

FF上一直装有Google笔记本的插件,一直没有到一面上去看,今天无意点到。发现多了个叫“Unfiled”的记事本,记得自己并未建过这么个东西,进去一看才发现,其实就是我的Google书签: 并且右下角也多了“Labels”,且与我Google书签中的相同。 其实人家的右上角的“ New features! ”里说得很清楚: Integration with Google Bookmarks Notebook is now integrated with Google Bookmarks. Your bookmarks will show up as a special Unfiled notebook, making Google Notebook a single place to collect and organize interesting web pages. To publish and collaborate, just drag and drop bookmarks into notebooks.