过路的帮俺看看,路过有分

WWWDJ1983 2007-01-05 04:39:00
我数据库字段 "多附件上传地址" 中形式如下:
A:/aaa;B:/bbb;C:/ccc;
下载的时候怎么办?

public string FormatString(string str)
{
str = str.Replace(" ", "  ");
str = str.Replace("<", "<");
str = str.Replace(">", ">");
str = str.Replace('\n'.ToString(), "<br>");
return str;
}
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();

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();
}
}

我这个只能下载如:A:/aaa 这样形式的单个附件,请问我要怎么改?
拜谢答者~~
...全文
641 40 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
40 条回复
切换为时间正序
请发表友善的回复…
发表回复
liyouwen 2007-01-06
  • 打赏
  • 举报
回复
路过
bfeather 2007-01-06
  • 打赏
  • 举报
回复
向数据库存储的时候你就应该存相对地址,绝对地址当然是web不支持的啦
bfeather 2007-01-06
  • 打赏
  • 举报
回复
string aaa = "A:/aaa;B:/bbb;C:/ccc";
string [] strAddress = aaa.slipt(";");
foreach(string str in strAddress)
{
this.response.write("<a href="+str+">"+str+"</a>");
}
pxpan_pan 2007-01-06
  • 打赏
  • 举报
回复

路过~~
WWWDJ1983 2007-01-06
  • 打赏
  • 举报
回复
错误是:不支持给定路径的格式。
karso 2007-01-06
  • 打赏
  • 举报
回复
jf 同意 ydsunny(小强) 的做法
WWWDJ1983 2007-01-06
  • 打赏
  • 举报
回复
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();
}
}
}
ice_frank 2007-01-06
  • 打赏
  • 举报
回复
UP
xray2005 2007-01-06
  • 打赏
  • 举报
回复
string aaa = "A:/aaa;B:/bbb;C:/ccc";
截成数组,做个循环
string [] strAddress = aaa.slipt(";");
-----------------
同意!
jf
地下室小红叔 2007-01-06
  • 打赏
  • 举报
回复
偶还同挣过分呢
WWWDJ1983 2007-01-06
  • 打赏
  • 举报
回复
再顶一下,下班前结贴
WWWDJ1983 2007-01-06
  • 打赏
  • 举报
回复
下班了,结贴
happyxuying 2007-01-06
  • 打赏
  • 举报
回复
晃来晃去
Airway1314 2007-01-06
  • 打赏
  • 举报
回复
.NET开发俱乐部给IT工作者提供交流平台,实现资源互补,共同进步!欢迎加入20152522

.NET开发俱乐部给IT工作者提供交流平台,实现资源互补,共同进步!欢迎加入20152522

.NET开发俱乐部给IT工作者提供交流平台,实现资源互补,共同进步!欢迎加入20152522

.NET开发俱乐部给IT工作者提供交流平台,实现资源互补,共同进步!欢迎加入20152522

.NET开发俱乐部给IT工作者提供交流平台,实现资源互补,共同进步!欢迎加入20152522
.NET开发俱乐部给IT工作者提供交流平台,实现资源互补,共同进步!欢迎加入20152522

.NET开发俱乐部给IT工作者提供交流平台,实现资源互补,共同进步!欢迎加入20152522

.NET开发俱乐部给IT工作者提供交流平台,实现资源互补,共同进步!欢迎加入20152522

.NET开发俱乐部给IT工作者提供交流平台,实现资源互补,共同进步!欢迎加入20152522

.NET开发俱乐部给IT工作者提供交流平台,实现资源互补,共同进步!欢迎加入20152522
WWWDJ1983 2007-01-06
  • 打赏
  • 举报
回复
xinganna() ( ) 信誉:100 Blog 2007-01-06 15:00:53 得分: 0


我很想帮你,明白后就告诉你


呵呵
xinganna 2007-01-06
  • 打赏
  • 举报
回复
我很想帮你,明白后就告诉你
cool20032004 2007-01-06
  • 打赏
  • 举报
回复
.net不会 路过的
happyxuying 2007-01-06
  • 打赏
  • 举报
回复
路过
guxue 2007-01-06
  • 打赏
  • 举报
回复
路过
lovedelphi2006 2007-01-05
  • 打赏
  • 举报
回复
严重同意楼上的方法,要求下截的数组的长度,就可以做个循环了
加载更多回复(20)

62,244

社区成员

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

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

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

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