首页 新闻 会员 周边

载WEB目录外的文件解决方法

0
悬赏园豆:50 [已解决问题] 解决于 2008-03-10 10:01
在WEB上做文件管理,文件存放在WEB外地其它目录,要下载前先需要登录验证权限,有权限才可以下载。我想到的方法有多种: <br> 1 &nbsp; 要读取文件时临时复制到WEB目录下。缺点:占用太多系统资源,造成很大磁盘碎片。 <br> 2 &nbsp; 用流读取,缺点:占用资源。 <br> 3 &nbsp; 临时建立快捷方式。要删除快捷方式时,如果别人也在使用,就会出错,如果不删除就会出现安全隐患。 <br> 4 &nbsp; 用ISAPI,做IIS扩展,当访问时就建立映射,把文件映射到WEB目录。在网上看到别人能实现,我不知道怎么做。
kony的主页 kony | 初学一级 | 园豆:130
提问于:2008-02-19 17:43
< >
分享
最佳答案
0
Response.TransmitFile(),就很好用的. Response.ContentType = "application/x-zip-compressed"; Response.AddHeader("Content-Disposition", "attachment;filename=downloadfilename.jpg"); Response.TransmitFile("Source/Users/" + Session["UserName"].ToString() + "/images/temp0.jpg");
侯垒 | 老鸟四级 |园豆:3435 | 2008-02-19 19:05
其他回答(3)
0
试过HttpResponse.TransmitFile()没?
deerchao | 园豆:8367 (大侠五级) | 2008-02-19 17:46
0
把文件所在地址映射成一个站点下的虚拟目录试试. 或者另建一个二级域名的网站如 files.yourdomain.com , 指向文件所在目录. 这样就可以实现分开布署了. 验证也可以做到.
沙加 | 园豆:3680 (老鸟四级) | 2008-02-19 19:06
0
文件下载不要直接指向文件本身 private void DownBackup(string fileName, string zipPath) { string path = Server.MapPath(zipPath); FileInfo file = new System.IO.FileInfo(@path); Response.Clear(); Response.AppendHeader("Content-Disposition", "attachment;filename=" + HttpUtility.UrlEncode(fileName) + ".zip"); Response.AppendHeader("Content-Length", file.Length.ToString()); Response.Charset = "gb2312"; string fileExtension = file.Extension; // 根据文件后缀指定文件的Mime类型 switch (fileExtension) { case ".mp3": Response.ContentType = "audio/mpeg3"; break; case "mpeg": Response.ContentType = "video/mpeg"; break; case "jpg": Response.ContentType = "image/jpeg"; break; case "........等等": Response.ContentType = "...."; break; default: Response.ContentType = "application/octet-stream"; break; } Response.TransmitFile(file.FullName); Response.End(); Response.Write("<script>window.close();</script>"); }
李.net | 园豆:730 (小虾三级) | 2008-02-20 17:24
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册