上午发贴的问题,没有解决,继续问,来者有分

WWWDJ1983 2007-01-08 02:01:32
是关于“多附件下载”的,我数据库字段 "多附件上传地址" 中形式是 :
A:/aaa;B:/bbb;C:/ccc;

下载页面:
下载的时候,先定義一個字符串數組,把分號之間的路径取出來存進數組,然後用一個循環輸出,在循環中调用下载函数如:FileDownload(),这样做可以吗?或者大哥们再提供一个思路。谢谢

private void FileDownload(string filepath)
{
FileInfo DownloadFile = new FileInfo(filepath);
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();
Response.End();

...全文
420 26 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
26 条回复
切换为时间正序
请发表友善的回复…
发表回复
facebookdotcom 2008-12-20
  • 打赏
  • 举报
回复
cordyceps 2007-01-14
  • 打赏
  • 举报
回复
又一个ASP方面的技术呀
wghwanggh 2007-01-08
  • 打赏
  • 举报
回复
dancun 2007-01-08
  • 打赏
  • 举报
回复
不清楚 。。。本来有本书上介绍的,,,现在没书啊。。书在国内。。。晕死了。。
WWWDJ1983 2007-01-08
  • 打赏
  • 举报
回复
实在是太感谢楼上了,结贴
cordyceps 2007-01-08
  • 打赏
  • 举报
回复
请问为什么我发的贴不会在http://topic.csdn.net/这个页面上呀??
partpass 2007-01-08
  • 打赏
  • 举报
回复
yangyupeng521 2007-01-08
  • 打赏
  • 举报
回复
你的Down.aspx页
private void Page_Load(object sender, System.EventArgs e)
{
if(!string.IsNullOrEmpty(Request["url"]))//传递的参数不为null和空时
{
……你的下载代码
//如果下载成功,最后再执行一个写页面的动作
HttpContext.Current.Response.Write("Down Succeed!");

// 向客户端发出当前所有缓冲的输出
HttpContext.Current.Response.Flush();
HttpContext.Current.Response.End();
}
}
WWWDJ1983 2007-01-08
  • 打赏
  • 举报
回复
呵呵,见谅,见谅,偶是一个刚入门的小菜鸟
yangyupeng521 2007-01-08
  • 打赏
  • 举报
回复
晕~~就知道你肯定想知道另一个办法。
你可以利用:
var httpurl="Down.aspx?url=c:\a.rar";//你的下载地址
var objxml = new ActiveXObject("Microsoft.XMLHttp");
objxml.open("GET",httpurl,true);
objxml.onreadystatechange = function()
{
if(objxml.readyState==4)
{
if(objxml.responseText!="")
{
//下载成功
}
}
}
objxml.send();
的方法来逐个下载每个附件。

你的Down.aspx的页在Request["url"]来进行下载。

这样你的下载会在不刷新中,慢慢的完成着。

这是我在项目中实时插入记录的一个方法,我觉得也比较适合你用。
WWWDJ1983 2007-01-08
  • 打赏
  • 举报
回复
yangyupeng521(自家胖子)

兄弟,你把另一个方法也说说看
WWWDJ1983 2007-01-08
  • 打赏
  • 举报
回复
yangyupeng521(自家胖子)
呵呵,我也是没办法,我先试试啊
yangyupeng521 2007-01-08
  • 打赏
  • 举报
回复
LZ我服了你了,看你连续好几天都问这个问题还没解决真是同情你啊~~~

我上午回了一个方法给你,你试了嘛?
就是你只要把路径传递给另一个页(Down.aspx),你的代码可以在Down.aspx页写。
例如说你写的:Down.aspx?url=c:\aaa.txt
你的Down.aspx页的Page_Load里面Request["url"]得到路径,然后在用你的那个方法直接下载。
你不是还有循环嘛,再反复的调呗。

如果再不行,我再告诉你另一个方法。
xbfitliu 2007-01-08
  • 打赏
  • 举报
回复
up
cpp2017 2007-01-08
  • 打赏
  • 举报
回复
Down.aspx: string sPath = Request.QueryString["Path"]; if(sPath == null) return ; strring sLocalPath = Server.Mappath(sPath); if(!System.IO.File.Exists(sLocalPath )) { return; } Response.WriteFile(sLocalPath ); Response.End();
WWWDJ1983 2007-01-08
  • 打赏
  • 举报
回复
cpp2017(慕白兄) ( ) 信誉:100 Blog 2007-01-08 14:48:03 得分: 0


上午我已经说过了,一个页面只能下载一个文件。

我就是不知道再做一个页面如:Down.aspx的话,Down.aspx上要写些什么东西,我不清楚这个思路,你能不能跟我说一下




uno 2007-01-08
  • 打赏
  • 举报
回复
确切的说,是一次request只能下载一个文件

或者,你用zip把文件打个包吧:P
cpp2017 2007-01-08
  • 打赏
  • 举报
回复
上午我已经说过了,一个页面只能下载一个文件。
WWWDJ1983 2007-01-08
  • 打赏
  • 举报
回复
protected void Button1_Click(object sender, EventArgs e)
{
if (Request["id"] != null)
{
int id = Convert.ToInt32(Request["id"]);//转换为数字,防止sql注入

SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings["SQLCONNECTIONSTRING"].ConnectionString);
conn.Open();
adr = "select 附件上传地址 from Mail WHERE 邮件编号 = " + id;
SqlCommand cmd = new SqlCommand(adr, conn);
string path = cmd.ExecuteScalar().ToString();
//取得路径
filepath = FormatString(path.ToString()).ToString().Trim();
//定义一個字符串數组,然後把路径存進數組
filepath = filepath.Substring(0, filepath.Length - 1); //去掉最末尾的分號
string[] strpaths = filepath.Split(';'); //把分號之間的路径取出來放到數組裡
//循環
for (int i = 0; i < strpaths.Length; i++)
{
string Temp_filename = FormatString(path.ToString()).ToString();
int pos = Temp_filename.LastIndexOf("\\") + 1;
filename = Temp_filename.Substring(pos, Temp_filename.Length - pos).ToString();
filename = HttpUtility.UrlEncode(System.Text.Encoding.UTF8.GetBytes(filename));

Response.Clear();
Response.ClearHeaders();
Response.ClearContent();
FileStream fs = new FileStream(filepath, FileMode.Open);
long FileSize = fs.Length;
byte[] Buffer = new byte[(int)FileSize];
fs.Read(Buffer, 0, (int)fs.Length);
fs.Close();
Response.ContentType = "application/octe-stream";
Response.AddHeader("content-disposition", "attachment;filename=" + filename);
Response.Charset = "UTF-8";
Response.ContentEncoding = System.Text.Encoding.UTF8;
Response.BinaryWrite(Buffer);
conn.Close();
}
}
}

错误是:不支持给定路径的格式
lazyfish 2007-01-08
  • 打赏
  • 举报
回复
foreach(stirng filepath in "A:/aaa;B:/bbb;C:/ccc".Split(";"))
{

}

加载更多回复(5)

62,243

社区成员

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

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

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

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