ASP.NET程序下载功能
(本人是初学者)近段时间想用ASP.NET写一个程序下载的功能,但遇到很多的问题!
我的设计是:在客户端单击LinkButton后,就会出现下载的页面(最常见的那种),
但在LinkButton单击事件里,应该怎样把提供下载的文件与这个按钮事件联系在一起,
还有下载功能需要用到什么方法、要注意什么,这些我都不了解,至此请各位朋友留
下宝贵的意见,如有相应的代码或思想最好!!!
感谢~~感谢!!
问题点数:20、回复次数:7Top
1 楼louzu1(伏龙芝)回复于 2005-02-14 12:31:14 得分 3
可以在按钮事件里写Response.Redirect("path");
如果指向的文件是可以下在的文件,比如“rar”,这样就会下载;
如果是word等文档,浏览器会打开,也可以下载;
如果指向jpg等,就直接打开了。
下载就这么简单,不过如果要下载收费,就得在定向到下载资源前做判断了。Top
2 楼askv(想学)回复于 2005-02-14 13:22:14 得分 1
如何在asp.net里防止盗链?Top
3 楼gxboy(Blin 小学生学.NET)回复于 2005-02-14 13:26:43 得分 1
那你到底是要出现下载页面,还是就直接下载Top
4 楼wenquan_nn(求学者)回复于 2005-02-14 14:03:38 得分 0
不好意思~~我没写清楚!
是直接下载!
如果使用Response.Redirect("path")的话,客户端下载时,会看到服务器端的绝对路径,
这样似乎不太安全,不知还有没有更好的方法??
不管怎样,在此先感谢大家!Top
5 楼bigbird998(解放美国,一国两制)回复于 2005-02-14 15:21:37 得分 5
session判断是否会员,是否允许下载
目前已知的方法没有很有效的防下载方法
一般都是对文件名或目录名进行处理,其实处理后用户还是可以得到最终的下载地址才能下载
其实经常用程序随机修改目录名也是个很好的方法,不过有点麻烦Top
6 楼zyug(LovlyPuppy)回复于 2005-02-14 16:00:36 得分 10
呵呵,前两天写的一个下载页面
文件是放到数据库中的
using System;
using System.Collections;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Web;
using System.Web.SessionState;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.HtmlControls;
using System.Data.SqlClient;
using System.IO;
namespace OnLineClass
{
/// <summary>
/// DownFiles 的摘要说明。
/// </summary>
public class DownFiles : System.Web.UI.Page
{
public int LessonID
{
get
{
return Request.QueryString["ID"] == null ?0:int.Parse(Request.QueryString["ID"].ToString());
}
}
private void Page_Load(object sender, System.EventArgs e)
{
// 在此处放置用户代码以初始化页面
if(this.LessonID <= 0 )
return;
using(SqlConnection sqlCon = new SqlConnection(Config.sqlConnectionString))
{
sqlCon.Open();
SqlCommand sqlComm = sqlCon.CreateCommand();
sqlComm.CommandText = "Update Lesson_Data_Table set Lesson_Click = Lesson_Click + 1 where Lesson_ID =" +LessonID;
sqlComm.ExecuteNonQuery();
sqlComm.CommandText = "select * from Lesson_Data_Table where Lesson_ID = "+LessonID;
SqlDataReader sqlReader = sqlComm.ExecuteReader();
byte[] buffer;
if(sqlReader.Read())
{
Response.Clear();
buffer = (byte[])sqlReader["Lesson_Data"];
Response.AddHeader("Content-Length",buffer.Length.ToString());
Response.AddHeader("Content-Type",sqlReader["Lesson_File_Type"].ToString());
Response.AddHeader("Content-Disposition", "attachment; filename="+sqlReader["Lesson_File_Name"].ToString());
Response.BinaryWrite(buffer);
Response.End();
}
sqlReader.Close();
}
}
#region Web 窗体设计器生成的代码
override protected void OnInit(EventArgs e)
{
//
// CODEGEN: 该调用是 ASP.NET Web 窗体设计器所必需的。
//
InitializeComponent();
base.OnInit(e);
}
/// <summary>
/// 设计器支持所需的方法 - 不要使用代码编辑器修改
/// 此方法的内容。
/// </summary>
private void InitializeComponent()
{
this.Load += new System.EventHandler(this.Page_Load);
}
#endregion
}
}
Top
7 楼kaiqiao521(K)回复于 2005-02-15 04:11:44 得分 0
快速学习asp.net的资料
http://218.27.204.17/aspnet/a_user.aspxTop




