存在数据库中的文件,当用户点击下载该文件时,被迅雷拦截,而用迅雷下下来的缺是aspx页面文件

bluemoon0001 2010-03-14 06:11:21
我们的附件文件被上传到数据库里,在页面上用<a href="DownFile.aspx?id=12">点击下载</a>这种方式供用户下载,这种下载如果用户使用浏览本身下载是没有问题的,可是如果用户电脑上装了迅雷,迅雷会自动拦截,而用迅雷下下来的缺是DownFile.aspx文件,而不是直正的附件文件。
注:DownFile.aspx是一个输出文件流的aspx页面。

现有的方案是,当用户浏览带有“<a href="DownFile.aspx?id=12">点击下载</a>”的页面时,把这个链接所对应的文件,在服务器上生成一个物理文件,假设叫作 fujian.rar,那么再把DownFile.aspx?id=12 直接换成 fujian.rar即可,可是这样改动起来有点麻烦,而且影响性能。

请问有没有更好的并且快捷的方式来解决这个问题?
...全文
392 14 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
blsegirl 2010-06-24
  • 打赏
  • 举报
回复
解决了吗,我这里也是这个错误
hztltgg 2010-05-10
  • 打赏
  • 举报
回复
DownFile.aspx 你这个里面的代码没有给出文件名吧
bluemoon0001 2010-05-10
  • 打赏
  • 举报
回复
不好意思,有位兄弟没有给到分,对不起。。。
bluemoon0001 2010-05-10
  • 打赏
  • 举报
回复
对不起各位,到现在没有结贴。
YnSky 2010-03-15
  • 打赏
  • 举报
回复
下载代码,把2010.xls换成要下载的文件的路径即可.
Response.Clear();
Response.Buffer = true;
Response.Charset = "GB2312";
Response.AppendHeader("Content-Disposition", "attachment; filename=PrizeInput.xls");
Response.TransmitFile(Server.MapPath("2010.xls"));
Response.End();
telankes2000 2010-03-15
  • 打赏
  • 举报
回复


public class DownloadHandler : IHttpHandler
{
/// <summary>
/// 讀取文件
/// </summary>
/// <param name="filePath">文件路徑</param>
/// <param name="context">下載頁面</param>
/// <param name="downLoadType">下載類型</param>
private void ReadFile(string filePath,HttpContext context,string downLoadType)
{
try
{
using(FileStream fs= new FileStream(filePath,FileMode.Open,FileAccess.Read, FileShare.Read))
{
string fileName = Path.GetFileName(filePath);
string encodeFileName = HttpUtility.UrlEncode(System.Text.Encoding.UTF8.GetBytes(Path.GetFileNameWithoutExtension(filePath)));
string fileExtension = Path.GetExtension(filePath);
if(fileExtension == ".xls" && encodeFileName.Length > 215)
encodeFileName = encodeFileName.Substring(0,210);
context.Response.ClearContent();
context.Response.Clear();
context.Response.ContentEncoding = System.Text.Encoding.UTF8;
context.Response.AddHeader("Content-Length", fs.Length.ToString());
context.Response.ContentType = "application/octet-stream";
context.Response.AddHeader("Content-Disposition", ""+downLoadType+"; filename=" + encodeFileName + fileExtension+"");
int readLength = 0;
byte[] buffer = new Byte[10240];//緩沖區大小 10k
while(true)
{
if(context.Response.IsClientConnected)
{
readLength = fs.Read(buffer,0,10240);
if(readLength == 0)break;
context.Response.OutputStream.Write(buffer, 0, readLength);
context.Response.Flush();
}
else
{
break;
}
}

context.Response.Close();
}
}
catch(Exception ex)
{
throw ex;
}
if(this.IsDelete){
DeleteFile(filePath);
}
}
private void DeleteFile(string filePath){
try{
if(System.IO.File.Exists(filePath)){
System.IO.File.Delete(filePath);
}
}
catch{}
}
private bool _isDelete;
private bool IsDelete{
get{return this._isDelete;}
}
public void ProcessRequest(HttpContext context)
{
if(context.Request["fn"] != null)
{
string filePath = Utils.Util.DecryptFileName(context.Request.QueryString["fn"].ToString().Trim()); //通过解密得到文件名
this._isDelete = context.Request.QueryString["d"] != null;
ReadFile(filePath,context,context.Request.QueryString["t"] == null ? "attachment" : "inline");//attachment:附件模式;inline在線模式
}
}
public bool IsReusable
{
get{return true;}
}
}

這是我常用的下載代碼
用迅雷5可以正確下載
你試試
aotian16 2010-03-15
  • 打赏
  • 举报
回复
0.0
bluemoon0001 2010-03-15
  • 打赏
  • 举报
回复
好,谢谢各位,我试一下,如果问题解决就结贴了。
dcbr4 2010-03-14
  • 打赏
  • 举报
回复
你把你的附件直接存文件,路径存数据库

文件存数据库慢,影响io直接读硬盘比较快
sunnj87 2010-03-14
  • 打赏
  • 举报
回复
不知道你所说的“在服务器上生成一个物理文件”是什么意思


是根据id生成一个文件吗?

然后就是要下载这个文件嘛?

可以直接获取该文件的物理路径

然后定义文件流发送到客户端就行了
空心兜兜 2010-03-14
  • 打赏
  • 举报
回复
没有截取到文件流
phpStudy 2016.10.31 再次更新,支持自定义php版本 一起学习php的小伙伴可以关注我的博客:http://blog.csdn.net/iwanghang/ phpStudy 2016.11.03 『软件简介』 该程序包集成最新的Apache+Nginx+LightTPD+PHP+MySQL+phpMyAdmin+Zend Optimizer+Zend Loader,一次性安装,无须配置即可使用,是非常方便、好用的PHP调试环境。该程序绿色小巧简易迷你仅有35M,有专门的控制面板。总之学习PHP只需一个包。   对学习PHP的新手来说,WINDOWS下环境配置是一件很困难的事;对老手来说也是一件烦琐的事。因此无论你是新手还是老手,该程序包都是一个不错的选择。 1、全面适合 Win2000/XP/2003/win7/win8/win2008 操作系统 ,支持Apache、IIS、Nginx和LightTPD。 2、该程序包集成以下软件,括号内为phpstudy下对应的目录。 php 7.0.12 php 5.6.27 php 5.5.38 php 5.4.35 php 5.2.17 Apache 2.4.23 Nginx 1.11.5 MySQL 5.5.53 MySQL-Front 5.3 phpMyAdmin 3.5.8.2 php_opcache xdebug 2.2.5 php_sqlsrv php_pdo_sqlsrv 3、MySQL数据库默认用户名:root,密码root,安装后请重新设置密码。 4、本程序纯绿色,支持22种组合一键切换,支持系统服务和非服务两种启动方式,自由切换。改变安装路径或拷贝到别的电脑上也可正常运行;即便是运行完再更改路径也能运行,真正做到无须配置。重写控制面板更加有效直观地进行控制程序的启停。 5、自带FTP服务器,支持多用户,无需再安装FTP服务器。自带网站挂马监视器,随记录文件的修改情况,让挂马文件无处可逃。 6、本程序完美支持II7,IIS8和IIS6。应网友的要求制作Nginx版和Lighttpd版。Nginx版为phpfind,Lighttpd版为phpLight。 推荐:学习JSP用JspStudy。 『软件简介』 JspStudy集成JDK+tomcat+Apache+mysql,JSP环境配置一键启动。无需修改任何配置即可迅速搭建支持JSP的服务器运行环境。 纯绿色解压即可,支持系统服务和非服务两种启动方式,自由切换。控制面板更加有效直观地进行控制程序的启停。 JspStudy将复杂的JSP环境配置简单化。 『特别注意』 1. 为了减少出错安装路径不得有汉字,如有防火墙开启,会提示是否信任httpd、mysqld运行,请选择全部允许。 2. 此为apache+php方案,需要Nginx+php方案的请到www.phpStudy.net下载phpfind,Lighttpd+PHP方案下载phpLight。 3. 重装系统后或相关服务丢失,只需要点一下『运行模式-应用』即可。 4. 可通过菜单『卸载相关服务』进行卸载相关服务。 5. 在『启动』、『停止』、『重启』三个启停按钮上右键可以有选择地进行启停,左键将控制全部的启停。 6. 菜单『phpStudy 设置』可以进行php,apche,mysql的相关设置。菜单『站点域名设置』可以进行站点及域名的添加。 7. 本程序分为安装版和非安装版,无论是安装还是免安装,最后的效果完全一致。 8. 端口问题无法启动,请使用菜单『强制启动端口』进行端口检测,尝试启动。 系统服务和非服务启动的区别: 系统服务启动:开机就会启动,适合经常使用或做服务器,无需手工启动,服务会随开机而启动,好处程序运行稳定。 非服务启动:需要手动启动一下,适合偶尔经常使用一下。在不使用的情况不会启动相关进程,从而节省电脑的资源。 『特别声明』该程序没有任何商业目的,之所以取名为phpStudy,仅作学习之用,不得用于商业用途;该程序所包括的软件版权归原作者所有。对于使用此程序给您造成的任何损失,本人概不负责! MySQL数据库默认用户名:root,密码root (为什么很多人看不到呢!!!) ====phpStudy提示没安装Zend或Zend Optimizer not Installed====== phpStudy是自带Zend Optimizer和Zend Guard Loader, 但是php5.3及以后的版本Zend Optimizer改名Zend Guard Loader。 php5.3及以后的版本Zend Optimizer改名Zend Guard Loader。 是zend官方改名不是我改的哟。 也就是说需要Zend Optimizer的程序将不能安装到php5.3以后的版本。 所以下载phpStudy之后切换到php5.2即可解决问题。 需要Zend Guard Loader的切换到php5.3和php5.4,但是必须是以fastcgi模式运行 参照:http://www.phpstudy.net/a.php/181.html ====IIS7/8快速安装PHP及phpStudy注意事项======= phpStudy支持win7/8和win2008/2012的IIS7/8。win8最好以管理员身份运行。已经测试过N次了。 但是在安装前要注意激活FastCGI 模块 默认安装的 IIS FastCGI 模块被关闭。要激活其的步骤在不同版本的 Windows 下不同。 要在 Windows Vista SP1 和 Windows 7 激活 FastCGI 支持: 在 Windows 开始菜单选择“运行...”(或在搜索框内),输入“optionalfeatures.exe”并按“确定”(或敲回车键); 在“Windows 功能”对话框展开“Internet 信息服务”,“万维网服务”,“应用程序开发功能”,并选“CGI”的选择框; 点击确定按钮并等待安装完成。 要在 Windows Server 2008 和 Windows Server 2008 R2 激活 FastCGI 支持: 在 Windows 开始菜单选择 "运行:",输入 "CompMgmtLauncher" 并点击 "确定"; 或 打开服务器管理器-添加角色-Web 服务器(IIS),再勾选CGI后安装 激活FastCGI 模块后切换到phpstudy的IIS7+php5.2-5.5即可 参照:http://www.phpstudy.net/a.php/182.html ====不能启动的问题========== 有个别同学说不能在win7下使用,此程序已经在Win2000/xp/2003/win7/win8/win2008下测试成功,操作系统均专业版。apache启动不了,原因一是防火墙拦截,二是80端口已经被别的程序占用,如IIS,迅雷等;三是没有安装VC9运行库,php和apache都是VC9编译。解决以上三个问题,99%能一次性安装成功,如何不能成功,那1%的可能就是人品问题,就不要联系我了。 不是管理员administrator的用户,请右键以管理员身份运行。win8最好以管理员身份运行。牵扯到服务进程的管理必须以管理员身份运行。 端口问题无法启动,请使用菜单『环境端口检测』进行端口检测,尝试启动。最重要的一点,你的机子一定要安装VC9运行库,phpStudy安装路径不得有汉字。 32位的VC9运行库下载:http://www.microsoft.com/zh-CN/download/details.aspx?id=5582 64位的VC9运行库下载:http://www.microsoft.com/zh-CN/download/details.aspx?id=15336 VC11运行库下载:http://www.microsoft.com/zh-CN/download/details.aspx?id=30679 不能启动 参照:http://www.phpstudy.net/a.php/184.html =====有问题的请仔细阅读下面内容。================= 1. 如何调试打开PHP 参照:http://www.phpstudy.net/a.php/183.html 2. 无法正常启动 参照:http://www.phpstudy.net/a.php/184.html 3. 如何修改端口及WWW目录 参照:http://www.phpstudy.net/a.php/185.html 4. 修改或重置MySQL密码 参照:http://www.phpstudy.net/a.php/186.html 5. 快速建立MySQL数据库 参照:http://www.phpstudy.net/a.php/187.html 6. 如何添加多站点 参照:http://www.phpstudy.net/a.php/188.html 7. 如何控制单一启停 参照:http://www.phpstudy.net/a.php/189.html 8. 重装系统后启动 参照:http://www.phpstudy.net/a.php/190.html 9. 如何更新升级 参照:http://www.phpstudy.net/a.php/191.html 10. 提示没安装Zend或Zend Optimizer not Installed 参照:http://www.phpstudy.net/a.php/181.html 11. IIS7/8快速安装PHP及注意事项 参照:http://www.phpstudy.net/a.php/182.html 12. 如何禁止或允许站点目录列表 参照:http://www.phpstudy.net/a.php/192.html 13. 自带Ftp Server如何使用 参照:http://www.phpstudy.net/a.php/193.html 14. 自带挂马监视器如何使用 参照:http://www.phpstudy.net/a.php/194.html
phpStudy 2014.10.02 『软件简介』 该程序包集成最新的Apache+Nginx+LightTPD+PHP+MySQL+phpMyAdmin+Zend Optimizer+Zend Loader,一次性安装,无须配置即可使用,是非常方便、好用的PHP调试环境。该程序绿色小巧简易迷你仅有35M,有专门的控制面板。总之学习PHP只需一个包。   对学习PHP的新手来说,WINDOWS下环境配置是一件很困难的事;对老手来说也是一件烦琐的事。因此无论你是新手还是老手,该程序包都是一个不错的选择。 1、全面适合 Win2000/XP/2003/win7/win8/win2008 操作系统 ,支持Apache、IIS、Nginx和LightTPD。 2、该程序包集成以下软件,括号内为phpstudy下对应的目录。 php 5.6.1 (php56n) php 5.5.17-nts (php55n) php 5.4.33-nts (php54n) php 5.3.29 (php53) php 5.3.29-nts (php53n) php 5.2.17 (php52) Apache 2.4.10 (Apache) Nginx 1.6.2 (nginx) LightTPD 1.4.35 (Lighttpd) MySQL 5.5.40 (MySQL) MySQL-Front 5.3 (SQL-Front) phpMyAdmin 3.5.8.2 (phpMyAdmin) pear 1.9.4 (pear) OpenSSL 1.0.1e&0.9.8y ZendOptimizer 3.3.3 (php5.2有) Zend Loader 5.5.0 (php5.3有) Zend Loader 6.0.0 (php5.4有) wincache 1.3.5 (fastcgi有) php_opcache 7.0.3 (ZendOpcache扩展) xdebug 2.2.5 xcache 3.1.0 eAccelerator 1.0&0.9.6 php_sqlsrv (MSSQL扩展) php_pdo_sqlsrv (PDO-MSSQL扩展) SendMail 3.2 (sendmail) 3、MySQL数据库默认用户名:root,密码root,安装后请重新设置密码。 4、本程序纯绿色,支持22种组合一键切换,支持系统服务和非服务两种启动方式,自由切换。改变安装路径或拷贝到别的电脑上也可正常运行;即便是运行完再更改路径也能运行,真正做到无须配置。重写控制面板更加有效直观地进行控制程序的启停。 5、自带FTP服务器,支持多用户,无需再安装FTP服务器。自带网站挂马监视器,随记录文件的修改情况,让挂马文件无处可逃。 6、本程序完美支持II7,IIS8和IIS6。应网友的要求制作Nginx版和Lighttpd版。Nginx版为phpfind,Lighttpd版为phpLight。 推荐:学习JSP用JspStudy。 『软件简介』 JspStudy集成JDK+tomcat+Apache+mysql,JSP环境配置一键启动。无需修改任何配置即可迅速搭建支持JSP的服务器运行环境。 纯绿色解压即可,支持系统服务和非服务两种启动方式,自由切换。控制面板更加有效直观地进行控制程序的启停。 JspStudy将复杂的JSP环境配置简单化。 『特别注意』 1. 为了减少出错安装路径不得有汉字,如有防火墙开启,会提示是否信任httpd、mysqld运行,请选择全部允许。 2. 此为apache+php方案,需要Nginx+php方案的请到www.phpStudy.net下载phpfind,Lighttpd+PHP方案下载phpLight。 3. 重装系统后或相关服务丢失,只需要点一下『运行模式-应用』即可。 4. 可通过菜单『卸载相关服务』进行卸载相关服务。 5. 在『启动』、『停止』、『重启』三个启停按钮上右键可以有选择地进行启停,左键将控制全部的启停。 6. 菜单『phpStudy 设置』可以进行php,apche,mysql的相关设置。菜单『站点域名设置』可以进行站点及域名的添加。 7. 本程序分为安装版和非安装版,无论是安装还是免安装,最后的效果完全一致。 8. 端口问题无法启动,请使用菜单『强制启动端口』进行端口检测,尝试启动。 系统服务和非服务启动的区别: 系统服务启动:开机就会启动,适合经常使用或做服务器,无需手工启动,服务会随开机而启动,好处程序运行稳定。 非服务启动:需要手动启动一下,适合偶尔经常使用一下。在不使用的情况不会启动相关进程,从而节省电脑的资源。 『特别声明』该程序没有任何商业目的,之所以取名为phpStudy,仅作学习之用,不得用于商业用途;该程序所包括的软件版权归原作者所有。对于使用此程序给您造成的任何损失,本人概不负责! MySQL数据库默认用户名:root,密码root (为什么很多人看不到呢!!!) ====phpStudy提示没安装Zend或Zend Optimizer not Installed====== phpStudy是自带Zend Optimizer和Zend Guard Loader, 但是php5.3及以后的版本Zend Optimizer改名Zend Guard Loader。 php5.3及以后的版本Zend Optimizer改名Zend Guard Loader。 是zend官方改名不是我改的哟。 也就是说需要Zend Optimizer的程序将不能安装到php5.3以后的版本。 所以下载phpStudy之后切换到php5.2即可解决问题。 需要Zend Guard Loader的切换到php5.3和php5.4,但是必须是以fastcgi模式运行 参照:http://www.phpstudy.net/a.php/181.html ====IIS7/8快速安装PHP及phpStudy注意事项======= phpStudy支持win7/8和win2008/2012的IIS7/8。win8最好以管理员身份运行。已经测试过N次了。 但是在安装前要注意激活FastCGI 模块 默认安装的 IIS FastCGI 模块被关闭。要激活其的步骤在不同版本的 Windows 下不同。 要在 Windows Vista SP1 和 Windows 7 激活 FastCGI 支持: 在 Windows 开始菜单选择“运行...”(或在搜索框内),输入“optionalfeatures.exe”并按“确定”(或敲回车键); 在“Windows 功能”对话框展开“Internet 信息服务”,“万维网服务”,“应用程序开发功能”,并选“CGI”的选择框; 点击确定按钮并等待安装完成。 要在 Windows Server 2008 和 Windows Server 2008 R2 激活 FastCGI 支持: 在 Windows 开始菜单选择 "运行:",输入 "CompMgmtLauncher" 并点击 "确定"; 或 打开服务器管理器-添加角色-Web 服务器(IIS),再勾选CGI后安装 激活FastCGI 模块后切换到phpstudy的IIS7+php5.2-5.5即可 参照:http://www.phpstudy.net/a.php/182.html ====不能启动的问题========== 有个别同学说不能在win7下使用,此程序已经在Win2000/xp/2003/win7/win8/win2008下测试成功,操作系统均专业版。apache启动不了,原因一是防火墙拦截,二是80端口已经被别的程序占用,如IIS,迅雷等;三是没有安装VC9运行库,php和apache都是VC9编译。解决以上三个问题,99%能一次性安装成功,如何不能成功,那1%的可能就是人品问题,就不要联系我了。 不是管理员administrator的用户,请右键以管理员身份运行。win8最好以管理员身份运行。牵扯到服务进程的管理必须以管理员身份运行。 端口问题无法启动,请使用菜单『环境端口检测』进行端口检测,尝试启动。最重要的一点,你的机子一定要安装VC9运行库,phpStudy安装路径不得有汉字。 32位的VC9运行库下载:http://www.microsoft.com/zh-CN/download/details.aspx?id=5582 64位的VC9运行库下载:http://www.microsoft.com/zh-CN/download/details.aspx?id=15336 VC11运行库下载:http://www.microsoft.com/zh-CN/download/details.aspx?id=30679 不能启动 参照:http://www.phpstudy.net/a.php/184.html scp1688@163.com QQ:282129207 http://www.phpStudy.net =====有问题的请仔细阅读下面内容。================= 1. 如何调试打开PHP 参照:http://www.phpstudy.net/a.php/183.html 2. 无法正常启动 参照:http://www.phpstudy.net/a.php/184.html 3. 如何修改端口及WWW目录 参照:http://www.phpstudy.net/a.php/185.html 4. 修改或重置MySQL密码 参照:http://www.phpstudy.net/a.php/186.html 5. 快速建立MySQL数据库 参照:http://www.phpstudy.net/a.php/187.html 6. 如何添加多站点 参照:http://www.phpstudy.net/a.php/188.html 7. 如何控制单一启停 参照:http://www.phpstudy.net/a.php/189.html 8. 重装系统后启动 参照:http://www.phpstudy.net/a.php/190.html 9. 如何更新升级 参照:http://www.phpstudy.net/a.php/191.html 10. 提示没安装Zend或Zend Optimizer not Installed 参照:http://www.phpstudy.net/a.php/181.html 11. IIS7/8快速安装PHP及注意事项 参照:http://www.phpstudy.net/a.php/182.html 12. 如何禁止或允许站点目录列表 参照:http://www.phpstudy.net/a.php/192.html 13. 自带Ftp Server如何使用 参照:http://www.phpstudy.net/a.php/193.html 14. 自带挂马监视器如何使用 参照:http://www.phpstudy.net/a.php/194.html

62,243

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧