欢迎光临
我们一直在努力

如何把数据放到web不能访问的文件夹中并给用户下载?-.NET教程,Asp.Net开发

建站超值云服务器,限时71元/月

在应用中我们可能遇到这样的情况,我们需要临时生成一个数据文件给用户下载,但是每次下载都要判断,也就是说,用户并不能得到这个下载的url不断下载文件,下面是实现方法。文件保存为csv格式,方便数据导入导出,基本原理就是用流写入文件然后用response.writefile把流发送到客户端。
表的结构同此文:http://blog.csdn.net/lovecherry/archive/2005/02/25/301441.aspx

sqlconnection conn=new sqlconnection(system.configuration.configurationsettings.appsettings[“conn”]);
   sqldataadapter da=new sqldataadapter(“select * from tb1”,conn);
   dataset ds=new dataset();
   da.fill(ds,”table1″);
   datatable dt=ds.tables[“table1”];
   string name=system.configuration.configurationsettings.appsettings[“downloadurl”].tostring()+datetime.today.tostring(“yyyymmdd”)+new random(datetime.now.millisecond).next(10000).tostring()+”.csv”;//存放到web.config中downloadurl指定的路径,文件格式为当前日期+4位随机数
   filestream fs=new filestream(name,filemode.create,fileaccess.write);
   streamwriter sw=new streamwriter(fs,system.text.encoding.getencoding(“gb2312”));
   sw.writeline(“自动编号,姓名,年龄”);
   foreach(datarow dr in dt.rows)
   {
    sw.writeline(dr[“id”]+”,”+dr[“vname”]+”,”+dr[“iage”]);
   }
   sw.close();
   response.addheader(“content-disposition”, “attachment; filename=” + server.urlencode(name));
   response.contenttype = “application/ms-excel”;// 指定返回的是一个不能被客户端读取的流,必须被下载
   response.writefile(name); // 把文件流发送到客户端
   response.end();

在这段代码前面你可以放置一些判断,判断是不是这个用户可以下载文件,生成的文件可以把名字存放到数据库中,下次可以直接下载而不要重复写文件了。

赞(0)
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com 特别注意:本站所有转载文章言论不代表本站观点! 本站所提供的图片等素材,版权归原作者所有,如需使用,请与原作者联系。未经允许不得转载:IDC资讯中心 » 如何把数据放到web不能访问的文件夹中并给用户下载?-.NET教程,Asp.Net开发
分享到: 更多 (0)