上传和下载附件功能
HTML上传部分 文件名:<asp:TextBox ID="tbFileName" runat="server" Width="150px"></asp:TextBox>文件(80M以内): <asp:FileUpload ID="FileUpload2" runat="server" /> <asp:Button ID="Button1" runat="server" CssClass="buttoncss" Text="上传" OnClick="Button1_Click" /> protected void Button1_Click(object sender, EventArgs e) { if (FileUpload2.HasFile && ViewState["pid"] != null) { string path = Server.MapPath("ATT"); //创建目录 string pid = ViewState["pid"].ToString(); if (!Directory.Exists(path + "/" + pid)) { Directory.CreateDirectory(path + "/" + pid); } path += "/" + pid; string filename = ""; if (!string.IsNullOrEmpty(tbFileName.Text)) { string hz = FileUpload2.FileName.Substring(FileUpload2.FileName.IndexOf('.'), FileUpload2.FileName.Length - FileUpload2.FileName.IndexOf('.')); filename = tbFileName.Text.Trim() + hz; } else { string Extension = System.IO.Path.GetExtension(FileUpload2.FileName).ToLower(); string FileName = FileUpload2.FileName.Substring(0, FileUpload2.FileName.IndexOf(Extension)); FileName += DateTime.Now.ToString("yyyyMMddhhmmss"); filename = FileName + Extension; } try { FileUpload2.SaveAs(path + "/" + filename); //保存信息 AttachmentModel uam = new AttachmentModel(); uam.AttFileName = filename.Substring(0, filename.IndexOf('.')); uam.ProjectId = Convert.ToInt32(pid); uam.AttPath = "ATT/" + pid + "/" + filename; LoginUserInfoModel lum = new LoginUserInfoModel(); lum = (LoginUserInfoModel)Session["LoginUserInfoModel"]; uam.RecordAccountNoID = lum.LoginUserID; if (IPB.SaveATT(uam)) { Page.RegisterClientScriptBlock("TS", "<script>jError('上传成功', { TimeShown: 1000, VerticalPosition: 'center' });;</script>"); ShowControl(); } else { Page.RegisterClientScriptBlock("TS", "<script>jError('上传失败', { TimeShown: 1000, VerticalPosition: 'center' });;</script>"); } } catch (Exception ex) { throw ex; } } else { Page.RegisterClientScriptBlock("TS", "<script>jError('请选择文件', { TimeShown: 1000, VerticalPosition: 'center' });;</script>"); } }
绑定显示上传成功的附件:
private void BindATT(string pid) { DataTable dt = IPB.GetATT(pid); string html = ""; if (dt != null && dt.Rows != null && dt.Rows.Count > 0) { foreach (DataRow dr in dt.Rows) { html += "<div style='float:left;margin-top:10px;clear:both;'> <a href='" + GetLink(dr["AttPath"].ToString()) + "' target='_blank' style='color:Blue;'>" + dr["AttFileName"].ToString() + " </a>"; html += "<a href=\"javascript:void(0);\" onclick=\"DelAtt('" + dr["id"].ToString() + "','" + HelpBLL.Encode(pid) + "');\" style=' font-size:12px;'>删除</a><br/>"; html += "</div>"; } } else { html = "<p style='color:red;'>暂无附件</p>"; } LAttHtml.Text = html; }
/// <summary> /// 获取下载URL /// </summary> /// <param name="url"></param> /// <returns></returns> public static string GetLink(string url) { string str = "Download.aspx?FileName=" + HttpUtility.UrlEncode(url) + ""; return str; }
Download.aspx 只有后台代码:
protected void Page_Load(object sender, EventArgs e) { if (!IsPostBack) { ResponseFile(HttpUtility.UrlDecode(Request.QueryString["FileName"])); } } public void ResponseFile(string fileName) { try { String FullFileName = HttpContext.Current.Server.MapPath(fileName); FileInfo DownloadFile = new FileInfo(FullFileName); Response.Clear(); Response.Expires = 0; Response.Buffer = true; Response.Charset = "utf-8"; Response.ContentEncoding = System.Text.Encoding.UTF8; Response.ContentType = "application/octet-stream"; Response.AppendHeader("Content-Disposition", "attachment;filename=" + System.Web.HttpUtility.UrlEncode(DownloadFile.FullName, System.Text.Encoding.UTF8)); Response.AppendHeader("Content-Length", DownloadFile.Length.ToString()); Response.TransmitFile(DownloadFile.FullName); Response.End(); } catch { } }