做了个图书网站-----想实现提供下载功能。好让别人下载来看
/ViewBookComment.aspx?BookID=2
/ViewBookComment.aspx?BookID=3
/ViewBookComment.aspx?BookID=4
/ViewBookComment.aspx?BookID=5
有一个button按钮。别人点击这就可以下载了
但我不知道怎么才能实现BookID变换button的连接也相应的改变。连接地址我准备放在列名为http的表中。表名为book。BookID也是book表中的一列。
希望高手给出个办法
/ViewBookComment.aspx?BookID=2
/ViewBookComment.aspx?BookID=3
/ViewBookComment.aspx?BookID=4
/ViewBookComment.aspx?BookID=5
有一个button按钮。别人点击这就可以下载了
但我不知道怎么才能实现BookID变换button的连接也相应的改变。连接地址我准备放在列名为http的表中。表名为book。BookID也是book表中的一列。
希望高手给出个办法
解决方案 »
- textbox的EnableViewState设置false为什么提交还是保存了控件的value
- gridview 显示隐藏层的问题
- 在RowDataBound事件中加入了如下代码后,点击[编辑]按钮出现“输入字符串的格式不正确”
- 请问哪里有Url Rewriting(伪静态)的例子
- 如何复制文件到远程计算机(网络共享)
- 先将SqlDataReader里面读出的数据转移到ArrayList然后再绑定到页面是个好方法吗?
- 怎么用服务端代码关闭一个打开的弹出窗口?
- 如何将数据库中的二进制图片绑定到网页中的ImageButton标签下
- 求一.net 开发框架
- 如何window.showModalDialog
- 在线急等,关于master page的问题
- master文件的引用问题~~
一种楼上的已经说了,不过这样会暴露路径第二种:
根据相应的参数,从数据库里读出图书的信息,计算出路径,然后得用一个下载函数实现下载。这样资源的路径不会暴露。public void FileDownload(string FullFileName)
{
System.Web.HttpContext context = System.Web.HttpContext.Current;
FileInfo DownloadFile = new FileInfo(FullFileName);
context.Response.Clear();
context.Response.ClearHeaders();
context.Response.Buffer = false;
context.Response.ContentType = "application/octet-stream";
//Response.ContentType = "application/ms-excel";
context.Response.AppendHeader("Content-Disposition", "attachment;filename=" + HttpUtility.UrlEncode(DownloadFile.FullName, System.Text.Encoding.UTF8));
context.Response.AppendHeader("Content-Length", DownloadFile.Length.ToString());
context.Response.WriteFile(DownloadFile.FullName); context.Response.Flush();
context.Response.End();
}
把图书文件放在网站根目录下的一个文件夹,打比方说保存在Download文件夹下,然后在数据库中添加图书文件的路径的记录,比方说在Download中保存一个abc.chm的电子书,那么在数据库添加这么一条记录:(这些数据我是乱造的)
bookId path
1 /lownload/abc.chm
然后在页面/ViewBookComment.aspx?BookID=1中,获取参数BookId=1,根据这个参数读数据库,读出这个文件的具体地址为/download/abc.chm,那么重定向到这个文件,就可以了第二种方法:
保存的方法与第一种相同,只不过下载的时候不是重定向这个图书文件,而是调用一个下载函数,先把资源读到内在里,然后以数据流的形式发送给用户
比方在按钮事件里:
protocted void Button_Click(object sender, EventArgs e)
{
//读出文件的路径
string filePath = GetPath(); FileDownload(filePath); //发送给用户
}说的够详细了吧!