在html页面中定义附件初始情况
<td style="background:#F3F8FD; border-top-style: none; border-top-color: inherit; border-top- medium;" class="style1"> 附件: </td> <td colspan="3"; style="background:#F3F8FD;795px;padding-left:1px;border-top:none;"> <asp:Literal ID="attachementLite" runat="server"></asp:Literal> <table id="upDiv" border="0" style="margin-bottom: 5px;"> <tr> <td> <input type="file" name="upfile" style=" 190px;height:20px;" class="txt" /> </td> <td align="right"> <span style="padding-left: 2px;"> <input type="button" onclick="addFile();" class="btn" name="next" value="增加" style=" 48px; height: 18px; line-height: 16px;" /></span> </td> </tr> </table> </td>
后台读取附件表数据,并加载到前台显示
FileUploadBLL fileUploadBll = new FileUploadBLL(); IList<Model.FileUpload> attachmentList = fileUploadBll.GetListByEntityId(sysid);//将查询得到的结果集存到IList中 StringBuilder strAttachment = new StringBuilder(); if (attachmentList != null) { foreach (Model.FileUpload fup in attachmentList)//循环Model FileUpload的数据到定义的fup中. { strAttachment.Append("<span id="div" + fup.sysId + ""><a href="#" onclick="downLoadFilesel('" + fup.sysId + "')">" + fup.name + "</a> <a style="cursor:pointer" onclick="delFile('" + fup.sysId + "')">删除</a></span><br />"); } if (attachmentList.Count > 0) { attachementLite.Text = strAttachment.ToString(); } }
定义对附件的删除,新增附件选框,删除附件选框的js方法
function delFile(fileId) {
//删除之前将对应的附件项隐藏,表现出删除的效果 //异步删除附件,用ajax,把附件id传到另一个页面,另一个页面的后台接收id,根据id进行删除操作 var vardiv = "div" + fileId; $("#" + vardiv + "").hide(); $.ajax({ type: "POST", url: "../../pact/delFile.aspx?fileId=" + fileId, success: function (msg) { } }); } function addFile() {
//通过DOM对象来生成新的附件选框,绑定当前选框的删除按钮 var num = document.getElementsByName("upfile").length + 1; var tb = document.getElementById('upDiv'); var tr = document.createElement("tr"); var td = document.createElement("td"); //var upFile = document.createElement("<input type='file' name='upfile'>"); var upFile = document.createElement("input"); upFile.setAttribute("type", "file"); upFile.setAttribute("name", "upfile"); //var href = document.createElement("<a style="cursor:pointer" onclick=removeFile(this)></a>"); var href = document.createElement("a"); href.setAttribute("onclick", "javascript:removeFile(this)"); href.innerHTML = "<input type="button" class="btn" name="next" value="删除" style=" 48px;height: 18px; line-height: 16px;" />"; /*td.insertAdjacentElement('beforeEnd',upFile); td.insertAdjacentElement('beforeEnd',href); tr.insertAdjacentElement('beforeEnd', td);*/ td.appendChild(upFile); td.appendChild(href); tr.appendChild(td); //tb.childNodes[0].insertAdjacentElement('beforeEnd', tr); tb.appendChild(tr); if (num >= 9) { //document.getElementById("Remove").style.display="none"; } } function removeFile(obj) {
//删除按钮对象的父级对象的父级对象,对于父节点的处理参照 //document.getElementById('upDiv').childNodes[0].removeChild(obj.parentElement.parentElement); document.getElementById('upDiv').removeChild(obj.parentElement.parentElement); var num = document.getElementsByName("upfile").length + 1; if (num <= 9) { // document.getElementById("Remove").style.display="block"; } }
处理方法
在项目下的一个页面内对js方法中传来的附件id以及其它值进行处理
using System; using System.Data; using System.Configuration; using System.Collections; using System.Web; using System.Web.Security; using System.Web.UI; using System.Web.UI.WebControls; using System.Web.UI.WebControls.WebParts; using System.Web.UI.HtmlControls; using ChengJian.Com.UI; public partial class pact_delFile : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { if (Request.QueryString["fileId"] != null) { string fileId = Request.QueryString["fileId"].ToString(); FileUploadUtil.deleteFileUpload(fileId); //BaseFunction bFunction = new BaseFunction(); //bFunction.ExecuteNonQuery("delete from chengjian_FileUpload where sysId = '" + fileId + "'"); } } }
/// <summary> /// 删除单个附件表 /// </summary> /// <param name="sysId"></param> public static void deleteFileUpload(string sysId) { FileUploadBLL fileUploadBll = new FileUploadBLL(); Model.FileUpload fup = fileUploadBll.GetModel(sysId); if (fup != null) { string uploadpath = string.Empty; uploadpath = ConfigHelper.GetConfigStr("uploadpath"); uploadpath += fup.path + "/" + fup.uploadName; FileInfo file = new FileInfo(uploadpath); if (file.Exists) { file.Delete(); //删除实际附件 } fileUploadBll.Delete(sysId); //删除表记录 } }
添加好附件之后的保存的写法.
if (result) { UploadWebPage sda = new UploadWebPage(); sda.UploadFile("investments", sysid, SessionInclude.Id);//第一个字符串是附近存放的文件夹.没有该文件夹会自动创建,sysid是附件表的主键id,自己定义,在后面的参数则是添加附件的用户id Page.ClientScript.RegisterStartupScript(Page.GetType(), "message", "<script language='javascript' defer>alert('操作成功!');window.location.href ="investmentPlanEdit.aspx?SysId=" + sysid + ""</script>"); } else { Page.ClientScript.RegisterStartupScript(Page.GetType(), "message", "<script language='javascript' defer>alert('操作失败!');</script>"); }
对应的BLL
public void UploadFile(string folder, string entityId, string creatorId) { UploadFile(null, null, folder, entityId, creatorId); }
对应的的DAL
public void UploadFile(System.Web.HttpRequest request, string dir, string folder, string entityId, string creatorId) { if (request == null) { request = Request; } string inspath = folder + """ + entityId; for (int i = 0; i < request.Files.Count; i++)//循环添加附件 { if (request.Files[i].ContentLength > 0) { string fileName = System.IO.Path.GetFileName(request.Files[i].FileName);//获得上传附件名. string path = ""; if (dir == null || dir == string.Empty) { path = ConfigHelper.GetConfigStr(UPLOADPATH);//设定文件路径 } else { path = ConfigHelper.GetConfigStr(dir); } path += folder + "/" + entityId; if (!Directory.Exists(path)) { Directory.CreateDirectory(path); } string _path = path + "/" + fileName; string sysId = UUIDGenearte.getUUID(); path += "/" + sysId + System.IO.Path.GetExtension(_path); if (File.Exists(path)) { File.Delete(path); } request.Files[i].SaveAs(path); fileUpload = new FileUpload(); fileUpload.sysId = sysId; fileUpload.entityId = entityId; fileUpload.creatorId = creatorId; fileUpload.uploadType = folder; fileUpload.contentType = request.Files[i].ContentType; fileUpload.fileSize = request.Files[i].ContentLength; fileUpload.name = fileName; fileUpload.path = folder + "/" + entityId; fileUpload.uploadName = fileUpload.sysId + System.IO.Path.GetExtension(_path); fileUpload.createdDate = DateTime.Now; fileUploadBll.Add(fileUpload);//将数据存入附件表中 } } }