您的位置:首页 > 编程语言 > C#

C#中实现同时上传多个附件

2011-01-14 11:32 495 查看


添加多个附件的方法是先创建一个临时文件夹,把待上传的文件放在临时文件夹内,然后一并移动到确定的目录中。

添加按钮的代码

/// <summary>
/// 添加多个附件
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void BtnCopy_Click(object sender, System.EventArgs e)
{
string fileName="";
if ((this.uploadfile.PostedFile != null) & (this.uploadfile.PostedFile.FileName.Length > 0))
{

if (!File.Exists(this.Server.MapPath("uploadArt")))
{
Directory.CreateDirectory(Server.MapPath("uploadArt"));
}

string destDir = this.Server.MapPath("uploadArt");  //创建临时目录

if (!Directory.Exists(destDir + @"/" +UInfo.UserId))
{
Directory.CreateDirectory(destDir + @"/" +UInfo.UserId);
}
destDir = this.Server.MapPath(@"uploadArt/" +UInfo.UserId);

string destdir0="";//真实目录

if (Arid== "")
{
destdir0 = destDir;
}
else
{
destdir0 =Server.MapPath(@"uploadArt/" + this.Arid);
}
try
{
string[] strArray = this.uploadfile.PostedFile.FileName.ToString().Split('//');
int index = strArray.Length - 1;
fileName = strArray[index];

//'检测在listbox列表中是否已经添加该文件
foreach (ListItem item3 in this.filelist.Items)
{
if (fileName==item3.Value)
{
string exitfile = "文件:" + fileName + " 已经存在于列表中!";
this.Page.RegisterStartupScript("saved", string.Format("<mce:script language='javascript'><!--
alert('" + exitfile + "');
// --></mce:script>", fileName));
return;
}
}

//检测在临时目录中是否有该文件。
if (File.Exists(Path.Combine(destdir0, fileName)))
{
File.Delete(Path.Combine(destdir0, fileName));
}
this.uploadfile.PostedFile.SaveAs(Path.Combine(destDir, fileName));

ListItem item2 = new ListItem();
this.rongling += this.uploadfile.PostedFile.ContentLength;
item2.Text = fileName;
item2.Value = fileName;
this.filelist.Items.Add(item2);
}
catch (Exception ex)
{

this.Page.RegisterStartupScript("error", string.Format("<mce:script language='javascript'><!--
alert('{0}');
// --></mce:script>", ex.Message.ToString()));

}
}
}


删除按钮的代码

/// <summary>
/// 删除附件
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void BtnDelete_Click(object sender, System.EventArgs e)
{
string destDir=Server.MapPath("uploadArt"+@"/"+UInfo.UserId);
if (this.filelist.SelectedIndex != -1)
{
string dir = Path.Combine(destDir, this.filelist.SelectedItem.Value);
if (!File.Exists(dir))
{
string destDir0;
if (Arid == "")
{
destDir0 = dir;
}
else
{
destDir0 = this.Server.MapPath(@"uploadArt/" + this.Arid);//真正目录
}
dir = Path.Combine(destDir0, this.filelist.SelectedItem.Value);
}
FileInfo info = new FileInfo(dir);
File.Delete(dir);
filelist.Items.RemoveAt(filelist.SelectedIndex);
}
}


删除文件

/// <summary>
/// 删除文件
/// </summary>
/// <param name="descDirectory"></param>
public static void DeleteFiles(string descDirectory)
{
try
{
foreach (string str in Directory.GetFiles(descDirectory))
{
if (File.Exists(str))
{
File.Delete(str);
}
}
}
catch
{
}
}


附件的名称

/// <summary>
/// 返回附件名称
/// </summary>
/// <returns></returns>
private string GetFujian()
{
string str_fujian="";
if(filelist.Items.Count>0)
{
for(int i=0;i<filelist.Items.Count;i++)
{
if(i==filelist.Items.Count-1)
{
str_fujian+=filelist.Items[i].Text;
}
else
{
str_fujian+=filelist.Items[i].Text+"|";
}
}
}
return str_fujian;
}


点保存按钮后需要移动文件

代码如下:

//处理附件问题,将临时目录中的文件剪贴到以文章ID为文件夹的真正的目录中
//获取文章ID,并生成文件夹
string ArticleID=this.dbArID.Text.Trim();
string str_wok=Server.MapPath("uploadArt");
if(!Directory.Exists(str_wok+@"/"+ArticleID))
{
Directory.CreateDirectory(str_wok+@"/"+ArticleID);
}

//剪贴文件
//将文件放在真正目录
string[] arr=GetFujian().Split('|');
for(int i=0;i<arr.Length;i++)
{
if(arr[i]!="")
{
if(!File.Exists(Server.MapPath(@"uploadArt/"+ArticleID)+@"/"+arr[i]))
{
//若目标文件夹存在此文件则出错
File.Move(Server.MapPath(@"uploadArt/"+UInfo.UserId)+@"/"+arr[i],Server.MapPath(@"uploadArt/"+ArticleID)+@"/"+arr[i]);
}
}
}

//删除临时文件夹里的文件
if(Directory.Exists(Server.MapPath(@"uploadArt/"+UInfo.UserId)))
{
DeleteFiles(Server.MapPath(@"uploadArt/"+UInfo.UserId));
Directory.Delete(Server.MapPath(@"uploadArt/"+UInfo.UserId));
}


修改所上传的附件时代码如下:

//处理附件
//删除附件
DataTable dt=cArticles.Instance().GetByID(this.dbArID.Text.Trim());
string str_fujian=dt.Rows[0]["fujian"].ToString();
string[] arr_ori=str_fujian.Split('|');
string[] arr_new=GetFujian().Split('|');
if(arr_ori.Length>0)
{
for(int i=0;i<=arr_ori.Length-1;i++)
{
bool bln=true;
if(arr_new.Length>0)
{
for(int j=0;j<=arr_new.Length-1;j++)
{
if(arr_new[j]==arr_ori[i])
{
bln=false;
break;
}
}
if(bln)
{
string destDir=Server.MapPath(@"uploadArt/"+this.dbArID.Text.Trim());
File.Delete(Server.MapPath(@"uploadArt/"+this.dbArID.Text.Trim()+@"/"+arr_ori[i]));//删除一个没有的文件不报错
}
}
}
}

//处理附件
//将临时目录中的文件剪贴到真正的存放目录
string[] arr=GetFujian().Split('|');
for(int i=0;i<=arr.Length-1;i++)
{
if(arr[i]!="")
{
if(!File.Exists(Server.MapPath(@"uploadArt/"+Arid)+@"/"+arr[i]))
{
if(File.Exists(Server.MapPath(@"uploadArt/"+UInfo.UserId)+@"/"+arr[i]))
{
File.Move(Server.MapPath(@"uploadArt/"+UInfo.UserId)+@"/"+arr[i],Server.MapPath(@"uploadArt/"+this.dbArID.Text.Trim())+@"/"+arr[i]);
}
}
}
}

//删除临时文件夹里的文件
if(Directory.Exists(Server.MapPath(@"uploadArt/"+UInfo.UserId)))
{
DeleteFiles(Server.MapPath(@"uploadArt/"+UInfo.UserId));
Directory.Delete(Server.MapPath(@"uploadArt/"+UInfo.UserId));
}


删除所有附件时代码

DeleteFiles(Server.MapPath(@"uploadArt/"+aid));
if (Directory.Exists(this.Server.MapPath(@"uploadArt/"+aid)))
{
Directory.Delete(Server.MapPath(@"uploadArt/"+aid));
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: