彩虹岛游戏 彩虹岛游戏90经典版
彩虹岛怎么玩啊进入游戏,登陆盛大帐号,在最底下找到创建角色,点击,进入创建界面右边选择名字,性别,男女,右边更改角色外型,选择好了点击中间决定,会有一段动画右下方点击跳过动画,等一会后自动进入游戏,C...
大家好,今天来为大家分享asp.net下载的一些知识点,和一个关于asp.net(c#)下载文件的问题的问题解析,大家要是都明白,那么可以忽略,如果不太清楚的话可以看看本篇文章,相信很大概率可以解决您的问题,接下来我们就一起来看看吧!
文件路径是不是有中文啊?zh-tw这是繁体的!
asp.net2.0以后,我们有了很多种文件下载的选择。
public partial class FileDownLoad: System.Web.UI.Page
{
//提供下载的文件,不编码的话文件名会乱码
private string fileName= HttpContext.Current.Server.UrlEncode("规范.rar");
private string filePath= HttpContext.Current.Server.MapPath("规范.rar");
//使用TransmifFile下载文件
protected void btnDL1_Click(object sender, EventArgs e)
{
FileInfo info= new FileInfo(filePath);
long fileSize= info.Length;
Response.Clear();
Response.ContentType="application/x-zip-compressed";
Response.AddHeader("Content-Disposition","attachment;filename="+ fileName);
//不指明Content-Length用Flush的话不会显示下载进度
Response.AddHeader("Content-Length", fileSize.ToString());
Response.TransmitFile(filePath, 0, fileSize);
Response.Flush();
Response.Close();
}
//使用WriteFile下载文件
protected void btnDL2_Click(object sender, EventArgs e)
{
FileInfo info= new FileInfo(filePath);
long fileSize= info.Length;
Response.Clear();
Response.ContentType="application/octet-stream";
Response.AddHeader("Content-Disposition","attachement;filename="+ fileName);
//指定文件大小
Response.AddHeader("Content-Length", fileSize.ToString());
Response.WriteFile(filePath, 0, fileSize);
Response.Flush();
Response.Close();
}
//使用OutputStream.Write分块下载文件
protected void btnDL3_Click(object sender, EventArgs e)
{
//指定块大小
long chunkSize= 102400;
//建立一个100K的缓冲区
byte[] buffer= new byte[chunkSize];
//已读的字节数
long dataToRead= 0;
FileStream stream= null;
try
{
//打开文件
stream= new FileStream(filePath, FileMode.Open, FileAccess.Read, FileShare.Read);
dataToRead= stream.Length;
//添加Http头
Response.ContentType="application/octet-stream";
Response.AddHeader("Content-Disposition","attachement;filename="+ fileName);
Response.AddHeader("Content-Length", dataToRead.ToString());
while(dataToRead> 0)
{
if(Response.IsClientConnected)
{
int length= stream.Read(buffer, 0, Convert.ToInt32(chunkSize));
Response.OutputStream.Write(buffer, 0, length);
Response.Flush();
Response.Clear();
dataToRead-= length;
}
else
{
//防止client失去连接
dataToRead=-1;
}
}
}
catch(Exception ex)
{
Response.Write("Error:"+ ex.Message);
}
finally
{
if(stream!= null)
{
stream.Close();
}
Response.Close();
}
}
//使用BinaryWrite下载文件,大文件效率不行
protected void btnDL4_Click(object sender, EventArgs e)
{
FileStream stream= null;
try
{
//读文件,大文件一次读入会占用大量内存
stream= new FileStream(filePath, FileMode.Open, FileAccess.Read, FileShare.Read);
byte[] bytes= new byte[stream.Length];
stream.Read(bytes, 0, bytes.Length);
stream.Close();
//添加Http头
Response.ContentType="application/octet-stream";
Response.AddHeader("Content-Disposition","attachement;filename="+ fileName);
Response.AddHeader("Content-Length", bytes.Length.ToString());
Response.BinaryWrite(bytes);
Response.Flush();
}
catch(Exception ex)
{
Response.Write("Error:"+ ex.Message);
}
finally
{
if(stream!= null)
{
stream.Close();
}
Response.Close();
}
}
//使用BinaryWrite分块下载文件
protected void btnDL5_Click(object sender, EventArgs e)
{
//指定区块和缓冲区
long chunkSize= 102400;
byte[] buffer= new byte[chunkSize];
FileStream stream= null;
long dataToRead= 0;
try
{
stream= new FileStream(filePath, FileMode.Open, FileAccess.Read, FileShare.Read);
dataToRead= stream.Length;
//添加Http头
Response.ContentType="application/octet-stream";
Response.AddHeader("Content-Disposition","attachement;filename="+ fileName);
Response.AddHeader("Content-Length", dataToRead.ToString());
while(dataToRead> 0)
{
if(Response.IsClientConnected)
{
int length= stream.Read(buffer, 0, Convert.ToInt32(chunkSize));
Response.BinaryWrite(buffer);
Response.Flush();
Response.Clear();
dataToRead-= length;
}
else
{
dataToRead=-1;
}
}
}
catch(Exception ex)
{
Response.Write("Error:"+ ex.Message);
}
finally
{
if(stream!= null)
{
stream.Close();
}
Response.Close();
}
}
}
public partial class FileDownLoad: System.Web.UI.Page{//提供下载的文件,不编码的话文件名会乱码 private string fileName= HttpContext.Current.Server.UrlEncode("规范.rar"); private string filePath= HttpContext.Current.Server.MapPath("规范.rar");//使用TransmifFile下载文件 protected void btnDL1_Click(object sender, EventArgs e){ FileInfo info= new FileInfo(filePath); long fileSize= info.Length; Response.Clear(); Response.ContentType="application/x-zip-compressed"; Response.AddHeader("Content-Disposition","attachment;filename="+ fileName);//不指明Content-Length用Flush的话不会显示下载进度 Response.AddHeader("Content-Length", fileSize.ToString()); Response.TransmitFile(filePath, 0, fileSize); Response.Flush(); Response.Close();}//使用WriteFile下载文件 protected void btnDL2_Click(object sender, EventArgs e){ FileInfo info= new FileInfo(filePath); long fileSize= info.Length; Response.Clear(); Response.ContentType="application/octet-stream"; Response.AddHeader("Content-Disposition","attachement;filename="+ fileName);//指定文件大小 Response.AddHeader("Content-Length", fileSize.ToString()); Response.WriteFile(filePath, 0, fileSize); Response.Flush(); Response.Close();}//使用OutputStream.Write分块下载文件 protected void btnDL3_Click(object sender, EventArgs e){//指定块大小 long chunkSize= 102400;//建立一个100K的缓冲区 byte[] buffer= new byte[chunkSize];//已读的字节数 long dataToRead= 0; FileStream stream= null; try{//打开文件 stream= new FileStream(filePath, FileMode.Open, FileAccess.Read, FileShare.Read); dataToRead= stream.Length;//添加Http头 Response.ContentType="application/octet-stream"; Response.AddHeader("Content-Disposition","attachement;filename="+ fileName); Response.AddHeader("Content-Length", dataToRead.ToString()); while(dataToRead> 0){ if(Response.IsClientConnected){ int length= stream.Read(buffer, 0, Convert.ToInt32(chunkSize)); Response.OutputStream.Write(buffer, 0, length); Response.Flush(); Response.Clear(); dataToRead-= length;} else{//防止client失去连接 dataToRead=-1;}}} catch(Exception ex){ Response.Write("Error:"+ ex.Message);} finally{ if(stream!= null){ stream.Close();} Response.Close();}}//使用BinaryWrite下载文件,大文件效率不行 protected void btnDL4_Click(object sender, EventArgs e){ FileStream stream= null; try{//读文件,大文件一次读入会占用大量内存 stream= new FileStream(filePath, FileMode.Open, FileAccess.Read, FileShare.Read); byte[] bytes= new byte[stream.Length]; stream.Read(bytes, 0, bytes.Length); stream.Close();//添加Http头 Response.ContentType="application/octet-stream"; Response.AddHeader("Content-Disposition","attachement;filename="+ fileName); Response.AddHeader("Content-Length", bytes.Length.ToString()); Response.BinaryWrite(bytes); Response.Flush();} catch(Exception ex){ Response.Write("Error:"+ ex.Message);} finally{ if(stream!= null){ stream.Close();} Response.Close();}}//使用BinaryWrite分块下载文件 protected void btnDL5_Click(object sender, EventArgs e){//指定区块和缓冲区 long chunkSize= 102400; byte[] buffer= new byte[chunkSize]; FileStream stream= null; long dataToRead= 0; try{ stream= new FileStream(filePath, FileMode.Open, FileAccess.Read, FileShare.Read); dataToRead= stream.Length;//添加Http头 Response.ContentType="application/octet-stream"; Response.AddHeader("Content-Disposition","attachement;filename="+ fileName); Response.AddHeader("Content-Length", dataToRead.ToString()); while(dataToRead> 0){ if(Response.IsClientConnected){ int length= stream.Read(buffer, 0, Convert.ToInt32(chunkSize)); Response.BinaryWrite(buffer); Response.Flush(); Response.Clear(); dataToRead-= length;} else{ dataToRead=-1;}}} catch(Exception ex){ Response.Write("Error:"+ ex.Message);} finally{ if(stream!= null){ stream.Close();} Response.Close();}}}
以上除了第四种不推荐以外,其他的都可以,但是个人感觉分块下载的要好一点。没有仔细测试,所以可能有问题。
注意:对于中文文件名要编码才能正确显示。对于长中文文件名(UTF8编码后大于153字节的中文)即使编码了,还是有问题的,大家可以参考这个链接。
但是这样的下载有几个问题: 1.无法下载不存在的文件:例如,我们若是想把程序动态(临时)产生的文字,当作一个文件下载的时候(也就是该文件其实原先并不是真的存在,而是动态产生的),就无法下载。 2.无法下载存储于数据库中的文件:这是类似的问题,该文件并没有真的存在,只是被存放在数据库中的某个位置(某笔记录中的某个栏位)的时候,就无法下载。 3.无法下载不存在于Web文件夹中的文件:文件确实存在,但该文件夹并不是可以分享出来的Web文件夹,例如,该文件的位置在C:/winnt,您总不会想要把该文件夹当作Web文件夹吧?这时候,由于您无法使用Redirect指向该位置,所以无法下载。 4.下载文件后,原本的页面将会消失。 1.这个文件可能是通过ASP.NET程序动态产生的,而不是确实存在于Server端的文件; 2.或是它虽然存在于伺服器端的某个实体位置,但我们并不想暴露这个位置(如果这个位置公开,很可能没有权限的用户也可以在网址栏上输入URL直接取得!!!) 3.或是这个位置并不在网站虚拟路径所在的文件夹中。(例如C:/Windows/System32...)这时候,我们就得采用不同的方式: Shared Function DownloadFile(ByVal WebForm As System.Web.UI.Page, ByVal FileNameWhenUserDownload As String, ByVal FileBody As String)WebForm.Response.ClearHeaders() WebForm.Response.Clear() WebForm.Response.Expires= 0 WebForm.Response.Buffer= True WebForm.Response.AddHeader(Accept-Language, zh-tw)'文件名称WebForm.Response.AddHeader(content-disposition, attachment; filename=& Chr(34)& System.Web.HttpUtility.UrlEncode(FileNameWhenUserDownload, System.Text.Encoding.UTF8)& Chr(34)) WebForm.Response.ContentType= Application/octet-stream'文件内容WebForm.Response.Write(FileBody)WebForm.Response.End() End Function上面这段代码是下载一个动态产生的文本文件,若这个文件已经存在于服务器端的实体路径,则可以通过下面的函数: Shared Sub DownloadFile(ByVal WebForm As System.Web.UI.Page, ByVal FileNameWhenUserDownload As String, ByVal FilePath As String)WebForm.Response.ClearHeaders() WebForm.Response.Clear() WebForm.Response.Expires= 0 WebForm.Response.Buffer= True WebForm.Response.AddHeader(Accept-Language, zh-tw)'文件名称WebForm.Response.AddHeader(content-disposition, attachment; filename=& Chr(34)& System.Web.HttpUtility.UrlEncode(FileNameWhenUserDownload, System.Text.Encoding.UTF8)& Chr(34))
asp.net环境配置ASP.NET
一、安装IIS与配置IIS
在Windows 2000、Windows XP、Windows 2003或Windows Vista等操作系统中,IIS文件及安装方式都有所不同。
1、Windows 2003下安装IIS:
依次点击“开始”->“设置”->“控制面板”->“添加删除程序”,在出现的“添加删除程序”界面中,单击
“添加/删除 Windows组件”,在出现的“Windows组件向导”窗口中,选中“应用程序服务器”后单击“下一步”
按钮,系统开始安装IIS组件。
2、Windows 2003的IIS配置:
安装好IIS后,在“控制面板”双击“Internet信息服务(IIS)管理器”,在“Internet信息服务”窗口中,点选
“默认网站”后右键选择“属性”,在出现的“默认网站属性”窗口中,右键依次选择“属性”->选择网站主目录。
这里只要选择本地路径就可以了。
另外在Web服务扩展中允许 ASP.NET v2.0.50727
3、Windows 2000、Windows XP下安装IIS:在Windows 2000、Windows XP操作系统中,IIS安装方法和配置与Windows 2003相似。这里就不详细写了。
4、Vista下安装IIS:
依次点击“开始”->“控制面板”->“程序”,在出现的“程序和功能”界面中单击“打开或关闭Windows功能”展开“Internet信息服务”:
在“Web管理工具”中,选中“IIS管理服务”、“IIS管理脚本和工具”、“IIS管理控制台”选项;在“万维网服务”中,选中“应用程序
开发功能”中的“.NET扩展性”、“ASP”“ASP.NET”选项。。
选择好后单击“确定”按钮,系统开始安装IIS组件,几分钟后IIS即可安装完成。
5、Windows Vista的IIS配置:
依次点击“开始”->“所有程序”->“管理工具”->“Internet信息服务(IIS)管理器”,在出现的“Internet信息服务(IIS)管理器”界面中,
依次点击“网站”->“设置网站默认设置”。
在出现的“网站默认设置”窗口中,单击“应用程序池”,在“应用程序池”的下拉菜单中,将“应用程序池”改为“Classic.NET AppPool”。
双击“默认文档”,修改首页的默认文档及排序,单击“应用”按钮保存设置。
二、安装与配置.NET Framework 2.0
您可以通过微软的官方网站下载.NET Framework 2.0(下载地址)安装程序。.NET Framework 2.0的安装过程非常简单,在解压.NET Framework 2.0安装包后,双击安装目录下的dotn
betfx2.0.exe安装文件,按照安装提示进行安装即可。
配置网站以支持.Net2.0。依次点击“开始”->“程序”->“控制面板”->“管理工具”->“Internet信息服务”,在“Internet信息服务”管理界面中点选“默认网站”后右键
选择“属性”,在出现的“默认网站属性”窗口中单击“ASP.NET”选项卡,并在“ASP.NET version”中选择“2.0.50727”。同时还可以看到其
安装路径等信息。
三、安装与配置SQL Server 2000/2005
只介绍SQL Server 2005的安装。
1、以下是安装过程中的几个重要设置。。建议一般用户在安装过程中按照以下示例进行设置。这里演示的是SQL2005开发版的安装。
2、如果你是用于测试环境,建议进行全部安装。如果是生产环境,请专业人员配置安装。
3、如果程序要用到报表服务器,就要选择reporting services,否则在安装过程中安装程序没有配置服务器,那么就会无法使用报表服务器。
4、sa密码一定要复杂。也要可以在安装完SQL之后把SA帐户删除,以保安全。
四、文件夹权限配置
首先要注意的是:为了你网站的安全请不要在IIS中打开写入权限,并且将你的磁盘文件系统格式转化安全一点的NTFS格式。请参照下面的说明进行权限的配置。
当站点在NTFS分区时,如果站点所在的目录或者数据库目录没有给访问的用户读写权限,那就会引起以下的错误:
1、“Microsoft JET Database Engine(0x80040E09)不能更新。
2、数据库或对象为只读
3、出现”请确认你具有对文件夹与文件有读写的权限”等提示
解决方法:我们假定站点在H:\website目录下,下面的图示以WINXP为例,其它系统可以参照进行设置,
具体操作如下:
1、查看站点是否安装在NTFS分区内,如果不是NTFS格式请转化为NTFS文件系统格式。也只有NTFS格式才能进行下面讲到的权限配置操作.
2、请进入文件管理器的文件夹选项
3、将“使用简单文件共享”前的勾选去掉
4、右键点击动易系统安装目录-共享和安全
6、点击高级选项
7、查找用户或组
8、选择aspnet帐户
9、点击确定
10、勾选站点目录对于aspnet的读写权限
好了,关于asp.net下载和一个关于asp.net(c#)下载文件的问题的问题到这里结束啦,希望可以解决您的问题哈!