紧急求助:路径问题

yan9299 2008-04-21 01:57:22
代码如下:

private void dataGrid_ItemCommand(object source, System.Web.UI.WebControls.DataGridCommandEventArgs e)
{
if(e.CommandName=="listen")
{
string ID = dataGrid.DataKeys[e.Item.ItemIndex].ToString();
string sql = "select record from table where id="+ID+"";
SqlDataReader Sdr = Class.ReturnDataReader(sql);
string path = Sdr[0].ToString();
if(!System.IO.File.Exists(path))
{
Response.Write("<script language='javascript'>alert('文件不存在!');</script>");
}
else
{
string url = path.Replace(@"d:\temp\","");
url = url.Replace("\\","/");
url = "http://202.168.194.124/"+url;
Response.Redirect(url);
}
}
if(e.CommandName=="down")
{
string ID = dataGrid.DataKeys[e.Item.ItemIndex].ToString();
string sql = "select record from table where id="+ID+"";
SqlDataReader Sdr = Class.ReturnDataReader(sql);
string path = Sdr[0].ToString();
if(!System.IO.File.Exists(path))
{
Response.Write("<script language='javascript'>alert('文件不存在!');</script>");
}
else
{
System.IO.FileInfo file = new System.IO.FileInfo(path);
Response.Clear();
Response.Charset="GB2312";
Response.ContentEncoding=System.Text.Encoding.UTF8;
Response.AddHeader("Content-Disposition", "attachment; filename=" + Server.UrlEncode(file.Name));
Response.AddHeader("Content-Length", file.Length.ToString());
Response.ContentType = "audio/x-wav";
Response.WriteFile(file.FullName);
Response.End();
}
}


}

以上代码点 试听(listen)按纽时,报错:HTTP 错误 404 - 找不到文件。但点 下载(down)按纽时,可以正常下载。我估计是代码

string url = path.Replace(@"f:\temp\","");
url = url.Replace("\\","/");
url = "http://202.168.194.124/"+url;
Response.Redirect(url);


代码中url取得的路径问题。其中record字段存放的是音位文件路径(如:d:\temp\music\xinyang.wav)。202.168.194.124是本机外网IP,本机在局域网中的IP为192.168.1.123 。还请各位高手指点,这段代码该怎么写才能读取到音乐文件。(音乐文件是确实存在的)
...全文
133 10 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
shyboy8 2008-04-22
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 dream00 的回复:]
只能访问网站根目录有以下的文件,不能越权访问到其它盘,或者以上的目录

其二你的record是虚拟路径还是绝对路径,如果是虚拟的请加上server.mappath
[/Quote]<----Agree
yan9299 2008-04-21
  • 打赏
  • 举报
回复
好象是可以访问其他盘的,我的record字段里是绝对路径
dream00 2008-04-21
  • 打赏
  • 举报
回复
只能访问网站根目录有以下的文件,不能越权访问到其它盘,或者以上的目录

其二你的record是虚拟路径还是绝对路径,如果是虚拟的请加上server.mappath
yan9299 2008-04-21
  • 打赏
  • 举报
回复
那比如说我机子上有个文件,我怎么能这样直接访问它呢?
http://localhost/music/aiqingzhuanyi.wav
jzywh 2008-04-21
  • 打赏
  • 举报
回复
IE直接访问http://202.168.194.124/music/xinyang.wav都不行,
先保证直接访问能ok, 我估计是 http://202.168.194.124/ 这个站点Mime-Type的问题!
jzywh 2008-04-21
  • 打赏
  • 举报
回复
Response.Redirect(url);

确保 这个url能够被访问
yan9299 2008-04-21
  • 打赏
  • 举报
回复
谢谢,不过不是这个的原因
skyaspnet 2008-04-21
  • 打赏
  • 举报
回复
Response.Redirect(url);

改为
Response.Write("<script>location.href='" + url + "';</script>");

我这边调试成功,你试一下
yan9299 2008-04-21
  • 打赏
  • 举报
回复
http://202.168.194.124/music/xinyang.wav
skyaspnet 2008-04-21
  • 打赏
  • 举报
回复
点试听的时候, URL地址栏得到的字符串是什么?

62,243

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧