我有一个ASP.NET页面的一部分可以执行一些操作。首先,当加载并显示某个面板时,声音文件将通过以编程方式设置的embed
标记播放。
标记:
<table border="0" cellpadding="0" cellspacing="0" width="100%">
<tr>
<td colspan="2" width="100%" align="center">
<asp:Literal runat="server" ID="lblEmbeddedObject" />
</td>
</tr>
<tr>
<td colspan="2">
</td>
</tr>
<tr>
<td align="left">
<asp:LinkButton runat="server" Text="Download" ID="btnDownloadCall" CssClass="button" OnClick="btnDownloadCall_OnClick" />
</td>
<td align="right">
<asp:LinkButton runat="server" ID="btnCloseListen" Text="Close" CssClass="button" OnClick="btnCloseListen_OnClick" />
</td>
</tr>
</table>
设置embed
的代码隐藏:
string fileName = @"/GetFile.aspx?file=prompts\141-319.wav&tid=prompt";
this.PlayingCallFile = fileName;
this.lblEmbeddedObject.Text = "<EMBED SRC=\"" + fileName + "\" WIDTH=395px HEIGHT = 100px AUTOPLAY=true CONTROLLER=true LOOP=false>";
点击下载按钮时触发的代码(供浏览器不支持时使用embed
):
string type = "text/wav";
Response.AppendHeader("content-disposition",
"attachment; filename=" + this.PlayingCallFile);
if (type != "")
Response.ContentType = type;
System.Diagnostics.Debug.WriteLine("Transmist to client:: " + this.PlayingCallFile);
Response.WriteFile(@"/GetFile.aspx?file=prompts\141-319.wav&tid=prompt");
Response.End();
字符串"/GetFile.aspx?file=prompts\141-319.wav&tid=prompt"
是问题开始的地方。奇怪的是,当此字符串文字被设置为src
标记内的embed
属性时,它会加载并在支持它的浏览器中播放。对于不支持embed
的浏览器,用户可以按下导致第三个代码段执行的链接按钮。
但是,当执行第三个代码段时,我可以Illegal characters in path
例外。我知道它挂在了/
字符上,但我不知道如何构建我的Response.WriteFile
任何其他方式,因为当我尝试对其进行编码时,我找不到文件和其他错误URL。
如何解决路径问题中的这些非法字符的任何信息将不胜感激。感谢。