说一下我的设计:
两个页面,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;//从数据库中读出的路径附值给TextReadMail.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();
}
}代码已经都贴出来了,请求解答,再拜谢`~~~
两个页面,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;//从数据库中读出的路径附值给TextReadMail.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();
}
}代码已经都贴出来了,请求解答,再拜谢`~~~
解决方案 »
- asp.net mvc 分页
- FCKeditor问题 这个问题很难吗?.net 80%人都用过吧 我第一次配有点问题不过java的配好了 坑人
- .net一个简单问题
- 救命啊,控件无法触发事件啊...
- 关于注册OWC10的问题,高人指点一哈~~
- 百分求建议,服务器搭建以及技术解决方案问题
- 上传文件的一段代码,看看那里错了
- 帮我解决web 调用串口短信dll问题
- 求救:IIS6下 虚拟目录下httpModule不接管请求
- Repeater控件问题
- frame架构下Response.AddHeader() 之后,js立即访问document对象出错???(ie 6.0 sp1)
- 请问哪些操作系统集成了JVM或者.netFrameWork,如果集成了,集成的JVM或者.netFrameWork是什么版本的?
而是
模拟按钮的click()事件
再你循环的地方
document.getElementById('Button5').click();
你可以试试不直接执行b页面
而是
模拟按钮的click()事件
再你循环的地方
document.getElementById('Button5').click();
————————
这个,我见识少,没弄过,能再说详细一点吗,
objxml.send();
window.open(httpurl,"");
objxml.open("GET",httpurl,false);
objxml.send();
window.open(httpurl,"");
————
慕白兄,你太牛X了,果然行了,
能不能再问一下,我有一个页面第一次进去的时候好好的,我后退一下再进去就不行,简直就是经不起测试“/OA”应用程序中的服务器错误。
--------------------------------------------------------------------------------列“filename”被约束为是唯一的。值“本.txt”已存在。
如果不想偷懒,直接加个trycatch 到 -2627的错误,就提示它数据重复,
要不然,保存前先检查数据是否重复