asp下载文件 asp软件下载
大家好,今天小编来为大家解答以下的问题,关于asp下载文件,asp软件下载这个很多人还不知道,现在让我们一起来看看吧!
如何在ASP.NET中下载文件
但是这样的下载有几个问题: 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(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字节的中文)即使编码了,还是有问题的,大家可以参考这个链接。
如何防止asp数据库databass被下载
建站一段时间后总能听得到什么什么网站被挂马,什么网站被黑。好像入侵挂马似乎是件很简单的事情。其实,入侵不简单,简单的是你的网站的必要安全措施并未做好。
有条件建议找专业做网站安全的sine安全来做安全维护。
一:挂马预防措施:
1、建议用户通过ftp来上传、维护网页,尽量不安装asp的上传程序。
2、对asp上传程序的调用一定要进行身份认证,并只允许信任的人使用上传程序。这其中包括各种新闻发布、商城及论坛程
序,只要可以上传文件的asp都要进行身份认证!
3、asp程序管理员的用户名和密码要有一定复杂性,不能过于简单,还要注意定期更换。
4、到正规网站下载asp程序,下载后要对其数据库名称和存放路径进行修改,数据库文件名称也要有一定复杂性。
5、要尽量保持程序是最新版本。
6、不要在网页上加注后台管理程序登陆页面的链接。
7、为防止程序有未知漏洞,可以在维护后删除后台管理程序的登陆页面,下次维护时再通过ftp上传即可。
8、要时常备份数据库等重要文件。
9、日常要多维护,并注意空间中是否有来历不明的asp文件。记住:一分汗水,换一分安全!
10、一旦发现被入侵,除非自己能识别出所有木马文件,否则要删除所有文件。
11、定期对网站进行安全的检测,具体可以利用网上一些工具,如sinesafe网站挂马检测工具!
二:挂马恢复措施:
1.修改帐号密码
不管是商业或不是,初始密码多半都是admin。因此你接到网站程序第一件事情就是“修改帐号密码”。帐号
密码就不要在使用以前你习惯的,换点特别的。尽量将字母数字及符号一起。此外密码最好超过15位。尚若你使用
SQL的话应该使用特别点的帐号密码,不要在使用什么什么admin之类,否则很容易被入侵。
2.创建一个robots.txt
Robots能够有效的防范利用搜索引擎窃取信息的骇客。
3.修改后台文件
第一步:修改后台里的验证文件的名称。
第二步:修改conn.asp,防止非法下载,也可对数据库加密后在修改conn.asp。
第三步:修改ACESS数据库名称,越复杂越好,可以的话将数据所在目录的换一下。
4.限制登陆后台IP
此方法是最有效的,每位虚拟主机用户应该都有个功能。你的IP不固定的话就麻烦点每次改一下咯,安全第一嘛。
5.自定义404页面及自定义传送ASP错误信息
404能够让骇客批量查找你的后台一些重要文件及检查网页是否存在注入漏洞。
ASP错误嘛,可能会向不明来意者传送对方想要的信息。
6.慎重选择网站程序
注意一下网站程序是否本身存在漏洞,好坏你我心里该有把秤。
7.谨慎上传漏洞
据悉,上传漏洞往往是最简单也是最严重的,能够让黑客或骇客们轻松控制你的网站。
可以禁止上传或着限制上传的文件类型。不懂的话可以找你的网站程序提供商。
8. cookie保护
登陆时尽量不要去访问其他站点,以防止 cookie泄密。切记退出时要点退出在关闭所有浏览器。
9.目录权限
请管理员设置好一些重要的目录权限,防止非正常的访问。如不要给上传目录执行脚本权限及不要给非上传目录给于写入权。
10.自我测试
如今在网上黑客工具一箩筐,不防找一些来测试下你的网站是否OK。
11.例行维护
a.定期备份数据。最好每日备份一次,下载了备份文件后应该及时删除主机上的备份文件。
b.定期更改数据库的名字及管理员帐密。
c.借WEB或FTP管理,查看所有目录体积,最后修改时间以及文件数,检查是文件是否有异常,以及查看是否有异常的账号。
网站被挂马一般都是网站程序存在漏洞或者服务器安全性能不达标被不法黑客入侵攻击而挂马的。
网站被挂马是普遍存在现象然而也是每一个网站运营者的心腹之患。
您是否因为网站和服务器天天被入侵挂马等问题也曾有过想放弃的想法呢,您否也因为不太了解网站技术的问题而耽误了网站的运营,您是否也因为精心运营的网站反反复复被一些无聊的黑客入侵挂马感到徬彷且很无耐。有条件建议找专业做网站安全的sine安全来做安全维护。
关于本次asp下载文件和asp软件下载的问题分享到这里就结束了,如果解决了您的问题,我们非常高兴。