有点奇怪,可能只需要一个小小的改动就能搞定,请帮我看一下,来看的都有分

WWWDJ1983 2007-02-02 09:49:25
说一下我的设计:
两个页面,ReadMail.aspx和DownLoad.aspx

在ReadMail.cs中:从数据库中读出附件路径如a/aa;b/bb;c/cc
然后把它附值给一个Text

在ReadMail.aspx中:写了个js方法,先取得Text中附件路径,把它分号之间的路径分割开来,然后在一个循环中调用DownLoad页面

在DownLoad页面中:只是下载

假设:当这封邮件有两个附件,则附件地址如a/aa;b/bb
问题:当我打开ReadMail页面,第一次点击附件下载按钮时,它只弹出一个下载页面,就是说不能循环调用下载页,但是我第二次点击附件下载按钮时,就可以正常循环弹出两个下载页面,为什么会这样?而且再继续点的话,又只弹出一个,再点则又恢复正常,奇怪,请帮我看看,谢谢~!~~

下面我把主要程序贴出来:
ReadMail.cs:
string path = dr["附件上传地址"].ToString();
filepath = path.ToString().Trim();
filepath = filepath.Substring(0, filepath.Length - 1);//去掉最末尾的分號
HiddenPath.Value = filepath;//从数据库中读出的路径附值给Text

ReadMail.aspx:
function DownLoadClick()
{

var AllUrl =document.getElementById("HiddenPath").value;
var ArrAllUrl=AllUrl.split(";");
var objxml = false;
for(var i=0;i<ArrAllUrl.length;i++)//循环执行下载页
{
var httpurl="Down.aspx?filepath="+escape(ArrAllUrl[i]);
try
{
objxml = new ActiveXObject("Msxml2.XMLHTTP");
}
catch (e)
{
try
{
objxml = new ActiveXObject("Microsoft.XMLHTTP");
}
catch (e2)
{
objxml = false;
}
}
objxml.open("GET",httpurl,true);
objxml.onreadystatechange = function()
{
if(objxml.readyState==4)
{
if(objxml.responseText!="")
{
//下载成功
window.open(httpurl,"");
}
}
}
objxml.send();
}
}
——————
<input id="Button5" type="button" value="附件下载" onclick="DownLoadClick()" runat="server" />
<input id="HiddenPath" type="text" runat="server" />

DownLoad.cs:
if (!IsPostBack)
{
string sPath = Request.QueryString["filepath"];
if (!string.IsNullOrEmpty(sPath))//传递的参数不为null和空时
{
string sLocalPath = Server.MapPath(sPath);
FileInfo DownloadFile = new FileInfo(sLocalPath);
Response.Clear();
Response.ClearHeaders();
Response.Buffer = false;
Response.ContentType = "application/octet-stream";
Response.AppendHeader("Content-Disposition", "attachment;filename=" + HttpUtility.UrlEncode(DownloadFile.FullName, System.Text.Encoding.UTF8));
Response.AppendHeader("Content-Length", DownloadFile.Length.ToString());
Response.WriteFile(DownloadFile.FullName);
Response.Flush();
HttpContext.Current.Response.Write("Down Succeed!");

// 向客户端发出当前所有缓冲的输出
HttpContext.Current.Response.Flush();

}
}

代码已经都贴出来了,请求解答,再拜谢`~~~
...全文
431 19 打赏 收藏 转发到动态 举报
写回复
用AI写文章
19 条回复
切换为时间正序
请发表友善的回复…
发表回复
WWWDJ1983 2007-02-02
  • 打赏
  • 举报
回复
好的,结贴
cpp2017 2007-02-02
  • 打赏
  • 举报
回复
列“filename”被约束为是唯一的。值“本.txt”已存在。 重复提交的问题. ========== 如果不想偷懒,直接加个try catch 到 -2627的错误,就提示它数据重复, 要不然,保存前先检查数据是否重复
lyywxl 2007-02-02
  • 打赏
  • 举报
回复
JF
huangdong1900 2007-02-02
  • 打赏
  • 举报
回复
莫非我来晚了??
照顶!!
WWWDJ1983 2007-02-02
  • 打赏
  • 举报
回复
马上就结贴
WWWDJ1983 2007-02-02
  • 打赏
  • 举报
回复
cpp2017(慕白兄) ( ) 信誉:100 Blog 2007-2-2 10:38:02 得分: 0



objxml.open("GET",httpurl,false);
objxml.send();
window.open(httpurl,"");
————
慕白兄,你太牛X了,果然行了,
能不能再问一下,我有一个页面第一次进去的时候好好的,我后退一下再进去就不行,简直就是经不起测试

“/OA”应用程序中的服务器错误。
--------------------------------------------------------------------------------

列“filename”被约束为是唯一的。值“本.txt”已存在。
WWWDJ1983 2007-02-02
  • 打赏
  • 举报
回复
hertcloud(·£DOTNET@C/C++£·做个热心人) ( ) 信誉:100

你可以试试不直接执行b页面
而是
模拟按钮的click()事件
再你循环的地方
document.getElementById('Button5').click();
————————
这个,我见识少,没弄过,能再说详细一点吗,




cpp2017 2007-02-02
  • 打赏
  • 举报
回复
objxml.open("GET",httpurl,false); objxml.send(); window.open(httpurl,"");
zfnh2002 2007-02-02
  • 打赏
  • 举报
回复
mark
WWWDJ1983 2007-02-02
  • 打赏
  • 举报
回复
hb_gx(高升)

呵呵,这样做简单一点嘛

cpp2017(慕白兄)

这个,请问如何改?我比较菜,
hb_gx 2007-02-02
  • 打赏
  • 举报
回复
我很奇怪为什么是点下载的时候把所以的下载页面循环弹出来
而不是我要下载那一个就点那一个下载?
cpp2017 2007-02-02
  • 打赏
  • 举报
回复
表面上看不出什么问题. 可能是异步的问题.导致对象错乱,先改成同步测试看看.
jsyxo 2007-02-02
  • 打赏
  • 举报
回复
不懂学习
tianyi_hsy 2007-02-02
  • 打赏
  • 举报
回复
up
hertcloud 2007-02-02
  • 打赏
  • 举报
回复
你可以试试不直接执行b页面
而是
模拟按钮的click()事件
再你循环的地方
document.getElementById('Button5').click();
咔咔咔西西 2007-02-02
  • 打赏
  • 举报
回复
低手只能看了
snwrong 2007-02-02
  • 打赏
  • 举报
回复
帮顶
WWWDJ1983 2007-02-02
  • 打赏
  • 举报
回复
期待慕白兄等热心高手相助,问题应该不是太难,只是我被卡住了,找不到问题所在,帖子有点长,希望高手们能看一看,很快的,期待~~期待~~,
angeldjd 2007-02-02
  • 打赏
  • 举报
回复
帮顶。。

62,072

社区成员

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

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

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

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