日期:2014-05-18  浏览次数:21084 次

[想想]Response.WriteFile();路径问题
最近要实现一个下载的功能,不能通过URL连接下来,只能点击按钮下来,现在出来一个觉得最简单的问题,把我卡死了,共享出来大家看看咯
C# code

 Response.Clear();
        Response.Charset = "gb2312";
        Response.Buffer = true;
       //关闭ViewState以提高速度
        this.EnableViewState = false;
       //定义输出文件编码及类型和文件名
        Response.ContentEncoding = System.Text.Encoding.GetEncoding("gb2312");
       Response.AppendHeader("Content-Disposition", "attachment;filename=" + "这个路径是另外目录的");
       //因为保存的文件类型不限,此处类型选择“unknown”。
        Response.ContentType = "application/unknown";
       Response.WriteFile("这个路径是另外目录的");
       //清空并关闭输出流
        Response.Flush();
       Response.Close();
       Response.End();


什么意思咯,现在网站有两个目录,一个SOFT是专门放文件的,一个DOWNLIST是提供下来的,放的是页面
上面的代码页面在DOWNLIST目录
上面要下载的文件目录在SOFT
问题就出来了,我点击按钮,然后他就会报错,因为WriterFile获取的目录是这样的D:\DemoProject\DoWNLIST\SOFT\test.rar
但是我放进去的路径是
D:\DemoProject\SOFT\test.rar
所以上面的路径是错的,现在怎么办咯,大家都帮帮我咯


------解决方案--------------------
Response.AppendHeader("Content-Disposition", "attachment;filename=" + "这个路径是另外目录的");

这一句filename是用户点击下载链接后,在浏览器端显示的文件名字,跟文件在服务器上的实际物理路径没有关系。

Response.WriteFile("这个路径是另外目录的");

这一句是根据给定的文件路径向客户端发送文件流,你提到的这个问题是相对路径的问题,如果SOFT文件夹在网站根目录下的话,可以使用Server.MapPah方法转换成服务器的物理路径,这样就可以准确定位到你的文件。

Response.WriteFile(Server.MapPath("~/soft") + filename);


------解决方案--------------------
不太懂,等答案~
------解决方案--------------------
不会asp.net,友情绑定。
------解决方案--------------------
顶!具有一定的代表性!
------解决方案--------------------
帮顶,学习
------解决方案--------------------
前一段时间也做了个上传下载的功能,
刚开始做下载的时候我就直接搞成物理路径了,
可是这样下载是不行的,因为布置到网站上以后必须是相对路径才行哦。
------解决方案--------------------
你传到虚拟目录试试!!