从多张表获取数据,重组DataTable,根据重组路径,打包下载文件。

#region 打包导出
public void ExportPackage()
{
#region 获取学生各个阶段上传的文件
string TopicId = GetTopicId();
string sql1 = "select * from tblTopicDraft where tblTopicId='" + TopicId + "' and stuId='" + studentID + "' and del_flg=0";
string sql2 = "select * from tblTopicFinalizeDraft where tblTopicId='" + TopicId + "' and stuId='" + studentID + "' and del_flg=0";
string sql3 = "select * from tblTopicEndDraft where tblTopicId='" + TopicId + "' and stuId='" + studentID + "' and del_flg=0";
string sql4 = "select * from tblTopicProposal where tblTopicId='" + TopicId + "' and stuId='" + studentID + "' and del_flg=0";
string path1 = "";
string path2 = "";
string path3 = "";
string path4 = "";
DataTable dt = s1.select(sql1);
if (dt.Rows.Count > 0)
{
//获取路径信息
path1 = dt.Rows[0]["Attachment"].ToString();
}
dt = s1.select(sql2);
if(dt.Rows.Count>0)
{
//获取路径信息
path2 = dt.Rows[0]["Attachment"].ToString();
}
dt = s1.select(sql3);
if(dt.Rows.Count>0)
{
//获取路径信息
path3 = dt.Rows[0]["Attachment"].ToString();
}
dt = s1.select(sql4);
if (dt.Rows.Count > 0)
{
//获取路径信息
path4 = dt.Rows[0]["Attachment"].ToString();
}
#endregion

#region 组装DataTable

DataTable dtNewTable = new DataTable("cart");
DataColumn dc1 = new DataColumn("id", Type.GetType("System.Int16"));
DataColumn dc2 = new DataColumn("path",Type.GetType("System.String"));

dtNewTable.Columns.Add(dc1);
dtNewTable.Columns.Add(dc2);

//以上代码完成了DataTable的构架,但是里面是没有任何数据的
for (int i = 0; i < 4; i++)
{
DataRow dr = dtNewTable.NewRow();
dr["id"] = i;
if(i==0)
{
dr["path"] = path1;
}
if (i == 1)
{
dr["path"] = path2;
}
if (i == 2)
{
dr["path"] = path3;
}
if (i == 3)
{
dr["path"] = path4;
}
dtNewTable.Rows.Add(dr);
}
#endregion

#region 根据路径保存到文件夹-打包下载
WebClient client = new WebClient();
if (dtNewTable.Rows.Count>0)
{
string sZipFileName = DateTime.Now.ToString("yyyy_MM_dd") + "_" + new System.Random().Next(100, 999).ToString();
string sZipFileName1 = sZipFileName;
string websysurl = System.Configuration.ConfigurationManager.AppSettings["websysurl"].ToString();
for (int j = 0; j < dtNewTable.Rows.Count; j++)
{
sZipFileName = sZipFileName1;
string Attachment = dtNewTable.Rows[j]["path"].ToString();
string strExt = dtNewTable.Rows[j]["path"].ToString();
string newext = strExt.Substring(strExt.LastIndexOf("."));
string sname ="";
string sno = "";

DataTable d2 = s1.select("select name,studyno from tblStudent where tblStudentID=" + studentID);
if (d2.Rows.Count > 0)
{
sname = d2.Rows[0][0].ToString();
sno = d2.Rows[0][1].ToString();
}
sname = sno + "_" + new System.Random().Next(100, 999).ToString() + sname; //重组文件名
Uri U1 = new Uri(websysurl + Attachment.Replace("..", ""));
string so = U1.AbsoluteUri;
try
{
string sFileName = sZipFileName;
sZipFileName = Server.MapPath("ItemTemplateExp/" + sFileName).Replace("LabOpenScience", "UpLoadFile");
if (Directory.Exists(sZipFileName) != true)//判断文件夹是否存在
{
Directory.CreateDirectory(sZipFileName);
}
string sPathOld = sZipFileName + "\" + zipCommon.FilterSpecial(sname + newext);
client.DownloadFile(so, sPathOld);//存入
}
catch (Exception e)
{
break;
}
}

string sZIPpath = sZipFileName.Remove(sZipFileName.LastIndexOf("\"));
zipCommon.CreateZip(sZipFileName, sZIPpath + "\" + sZipFileName1 + ".zip");//打包
string FullFileName = websysurl + "/LabTopicManage/ItemTemplateExp/" + sZipFileName1 + ".zip";//重组下载路径
A1.Attributes.Add("href", "" + FullFileName + "");//标签下载
}
#endregion

}
#endregion

反思 空杯 担当
原文地址:https://www.cnblogs.com/oralig/p/9878002.html