求教:LinkButton与网页对话框的问题

zhangzs8896 2005-10-29 11:41:21
我有一段下栽文件的代码,如下:
public void DownLoadFile(string FileName,string strAbsolutePath)
{
System.IO.Stream iStream = null;
byte[] buffer = new Byte[10000];
int length;
long dataToRead;
string filepath = strAbsolutePath;
try
{
iStream = new System.IO.FileStream(filepath, System.IO.FileMode.Open,System.IO.FileAccess.Read,System.IO.FileShare.Read);
dataToRead = iStream.Length;
Response.ContentType = "application/octet-stream";
Response.AddHeader("Content-Disposition", "attachment; filename=" +HttpUtility.UrlEncode(FileName));
while (dataToRead > 0)
{
if (Response.IsClientConnected)
{
length = iStream.Read(buffer, 0, 10000);
Response.OutputStream.Write(buffer, 0, length);
Response.Flush();
buffer= new Byte[10000];
dataToRead = dataToRead - length;
}
else
{
dataToRead = -1;
}
}
}
catch (Exception ex)
{
Response.Write("Error : " + ex.Message);
}
finally
{
if (iStream != null)
{
//Close the file.
iStream.Close();
}
}
}
我是将这些功能做在了usercontrol里。
(在DataGrid里的模板列里放了一个LinkButton,使它的click事件执行这段代码)
普通的页面使用这个usercontrol都是可以的,没有任何问题。但是我的实际应用需要的是在网页对话框里调用这段代码。
不知道是什么原因却不行,而且如果我点击了这个LinkButton后其他的LinkButton也失效了。
还请高手指教
...全文
177 11 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
zhangzs8896 2005-10-31
  • 打赏
  • 举报
回复
Error : 未找到路径“D:\׶칤Ŀ\1 ҵ\̴\camc.workflow\camc.workflow.businessflow\Temp\20051031\b5ef4376-6884-4fd2-98cb-a007e5f45811.rar”的一部分。
zhangzs8896 2005-10-31
  • 打赏
  • 举报
回复
按老大指点:
更改为:
<a href='../Files/UpLoadFile.aspx?NameAndPath=<%# DataBinder.Eval(Container.DataItem, "FileName").ToString()+","+DataBinder.Eval(Container.DataItem, "FilePath").ToString()%>'>
<%# DataBinder.Eval(Container.DataItem, "FileName")%>
</a>

中间页面:Page_Load内:
string[] NameAndPath=Request.QueryString["NameAndPath"].ToString().Split(',');
string FileName=NameAndPath[0];
string FilePath=NameAndPath[1];
DownLoadFile(FileName,FilePath); ---下栽代码方法。

结果是:有部分乱码以至找不到文件。
我的实际路径是: d:\中文\...\..
saucer 2005-10-31
  • 打赏
  • 举报
回复
do an encode/decode

<a href='../Files/UpLoadFile.aspx?NameAndPath=<%# HttpUtility.UrlEncode(DataBinder.Eval(Container.DataItem, "FileName").ToString()+","+DataBinder.Eval(Container.DataItem, "FilePath").ToString(), System.Text.Encoding.GetEncoding("GB2312"))%>'>

string[] NameAndPath=HttpUtility.UrlDecode(Request.QueryString["NameAndPath"].ToString(),System.Text.Encoding.GetEncoding("GB2312")).Split(',');
.....
zhangzs8896 2005-10-29
  • 打赏
  • 举报
回复
简单的连接到是可以下栽,
<a href='<%# DataBinder.Eval(Container.DataItem, "FilePath") %>'>
<%# DataBinder.Eval(Container.DataItem, "FileName") %></a>

但是不符合要求:(
因为显示的文件名不是我要的,我的物理文件是一个随机数+后缀,而需要显示的是汉字(原始文件名上传后更改文件名,我的原始文件名和文件物理路径全放在数据库里的)
还请大家帮忙,我只能按我开始说的做,但是不知道问题出在哪里。

luyesql 2005-10-29
  • 打赏
  • 举报
回复
帮你顶一下,因为不懂
zhangzs8896 2005-10-29
  • 打赏
  • 举报
回复
对了,我这个是跨进程的。
我是在项目1中打开网页对话框(项目2),项目对话框中放了Usercontrol的。
高手快来啊..............
losingrose 2005-10-29
  • 打赏
  • 举报
回复
用户控件不会自己保存状态的,需要自己写属性来设置
saucer 2005-10-29
  • 打赏
  • 举报
回复
试着将这下载的编码放在另一个页面里

>>>因为显示的文件名不是我要的,我的物理文件是一个随机数+后缀

用类似这样的语句

<a href="download.aspx?id=123">....</a>

123 -> 物理文件
zhangzs8896 2005-10-29
  • 打赏
  • 举报
回复

zhangzs8896 2005-10-29
  • 打赏
  • 举报
回复
ItemCommand里:
//这样调用的
System.Web.UI.WebControls.LinkButton lk=new LinkButton();
lk=(LinkButton)e.Item.FindControl("lk_FileName");
if (e.CommandName == "filename")
{
DownLoadFile(lk.Text,FilePath); //写别的代码可以。
} }
wangbiao 2005-10-29
  • 打赏
  • 举报
回复
你的用户控件公开了你的方法了吗?是不是linkbutton事件丢失了

62,243

社区成员

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

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

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

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