问大家一个关于并发多用户下载文件的问题 如果有多用户同时在服务器上下载一个文件,结果服务器报错误为:虚拟内存太低说明服务器将同一个下载文件读入到内存中读了很多次,比如:如果有10个人同时请求下载,那服务器端是不是在内存中将该文件读入了10个?请问,该怎么优化多用户同时下载 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 这是一个用FTP下载的例子.private void Download(string filePath, string fileName){ FtpWebRequest reqFTP; try { FileStream outputStream = new FileStream(filePath + "\\" + fileName, FileMode.Create); reqFTP = (FtpWebRequest)FtpWebRequest.Create(new Uri("ftp://" + ftpServerIP + "/" + fileName)); reqFTP.Method = WebRequestMethods.Ftp.DownloadFile; reqFTP.UseBinary = true; reqFTP.Credentials = new NetworkCredential(ftpUserID, ftpPassword); FtpWebResponse response = (FtpWebResponse)reqFTP.GetResponse(); Stream ftpStream = response.GetResponseStream(); long cl = response.ContentLength; int bufferSize = 2048; int readCount; byte[] buffer = new byte[bufferSize]; readCount = ftpStream.Read(buffer, 0, bufferSize); while (readCount > 0) { outputStream.Write(buffer, 0, readCount); readCount = ftpStream.Read(buffer, 0, bufferSize); } ftpStream.Close(); outputStream.Close(); response.Close(); } catch (Exception ex) { MessageBox.Show(ex.Message); }} octverve(生命无色,命运多彩……) 你是怎么做的? http://developer.51cto.com/art/200706/49911.htm 同时下载一个的话,IIS是仅读入一个文件的,但你自己用ASP.NET写下载逻辑的话,那就难说了。 to cat_hsfz 怎么写应该?我的代码是: FileInfo file = null; string filename = Server.MapPath(path); file = new FileInfo(filename); Response.Clear(); Response.AddHeader("Content-Disposition","attachment; filename="); Response.AddHeader("Content-Length",file.Length.ToString()); Response.ContentType = "application/octet-stream"; Response.WriteFile(filename); Response.End();不知道该怎么改动一下 直接用WriteFile的话,估计是优化过的,也就是同一文件只有一个缓存,这个要用Reflector看看WriteFile的实现。如果是自己把文件读到MemoryStream,然后写到Response的话,那个效率就不怎么样了。 代码问题 asp.net分类信息网站的一个功能 【撒分】怎样分页?? 求个小程序的代码 求个正则表达式 大家帮看一下,是什么错误,怎么改,在线等. 为什么不能自动登陆? Page_Load 里调用webservice为什么不执行?在线等 请问CheckBoxList控件是怎么向数据库中存数据的??初级! 菜鸟的一个小问! DataGrid选中多行同时插入数据库 求asp.net 2.0 动态树实现
private void Download(string filePath, string fileName)
{
FtpWebRequest reqFTP; try
{
FileStream outputStream = new FileStream(filePath + "\\" + fileName, FileMode.Create); reqFTP = (FtpWebRequest)FtpWebRequest.Create(new Uri("ftp://" + ftpServerIP + "/" + fileName)); reqFTP.Method = WebRequestMethods.Ftp.DownloadFile; reqFTP.UseBinary = true; reqFTP.Credentials = new NetworkCredential(ftpUserID, ftpPassword); FtpWebResponse response = (FtpWebResponse)reqFTP.GetResponse(); Stream ftpStream = response.GetResponseStream(); long cl = response.ContentLength; int bufferSize = 2048; int readCount; byte[] buffer = new byte[bufferSize]; readCount = ftpStream.Read(buffer, 0, bufferSize); while (readCount > 0)
{
outputStream.Write(buffer, 0, readCount); readCount = ftpStream.Read(buffer, 0, bufferSize);
} ftpStream.Close(); outputStream.Close(); response.Close();
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
你是怎么做的?
怎么写应该?
我的代码是:
FileInfo file = null;
string filename = Server.MapPath(path);
file = new FileInfo(filename);
Response.Clear();
Response.AddHeader("Content-Disposition","attachment; filename=");
Response.AddHeader("Content-Length",file.Length.ToString());
Response.ContentType = "application/octet-stream";
Response.WriteFile(filename);
Response.End();
不知道该怎么改动一下