最近在做一个信息发布系统。要有上传文件和下载的功能
直接上源码:
function addFile() { var str = '' document.getElementById('MyFile').insertAdjacentHTML("beforeEnd",str) } table align="center" class="fullwidth">附件:提示:长传的附件不能大于6M文件名称:上传作者:备注信息:
protected void btnUpload_Click(object sender, EventArgs e) { HttpFileCollection files = HttpContext.Current.Request.Files; for (int i = 0; i < files.Count; i++) { if (i < files.Count && i < 10) { if (files[i].FileName != "" || files[i] != null) { int FileSize = 6 * 1024 * 1024; HttpPostedFile myFile = files[i]; string strFilePath = myFile.FileName.ToString().Trim(); this.lblAttachmentError.Text = "<" + strFilePath + ">"; // Show file name int nFindSlashPos = strFilePath.Trim().LastIndexOf("//") + 1; string UploadFileName = strFilePath.Substring(nFindSlashPos); string FileName =string.Format("{0:yyMMdd-hhmmss}", DateTime.Now) + "_" + UploadFileName; //this.txtWorkOrder.Text if (myFile.FileName.Trim() == "") // Empty value in Browse Box { this.lblAttachmentError.Text = "没有文件被选择"; return; } if (myFile.ContentLength != 0) { if (myFile.ContentLength > FileSize) { this.lblAttachmentError.Text = "文件大小限制在6M以下"; return; } this.lblAttachment.Text += " " + FileName; this.lblAttachmentError.Text = ""; myFile.SaveAs(this.Request.PhysicalApplicationPath.ToString().Trim() + @"/uploads/" + FileName); //保存代码 string filename = string.Empty; int filesize; string filepath = string.Empty; string uploaduser = string.Empty; string remark = string.Empty; filename = txt_filename.Text.Trim(); filesize = myFile.ContentLength; filepath = FileName; uploaduser = txt_username.Text.Trim(); remark = txt_remark.Text.Trim(); string strsql = string.Format("insert onlinedoc(filename,filesize,path,uploaduser,remark)values('{0}',{1},'{2}','{3}','{4}')",filename,filesize,filepath,uploaduser,remark); DABaseAccess db = new DABaseAccess(); if (db.GetNonQuery(strsql.ToString())) { JScript.Alert("恭喜你文件上传成功,保存数据库成功!", this.Page); } else { JScript.Alert("保存数据库失败,请与管理员龚德辉联系!", this.Page); } } else { this.lblAttachmentError.Text = "文件没有找到"; return; } } } else this.lblAttachmentError.Text = "Uploaded File exceed limits."; } }
这个可以同时上传N个 不过我只传一个。
下载:
protected void btndownload_Click(object sender, ImageClickEventArgs e) { string path = Server.MapPath("uploads/") + this.path; // Session["file"].ToString(); //初始化 FileInfo 类的实例,它作为文件路径的包装 FileInfo fi = new FileInfo(path); //判断文件是否存在 if (fi.Exists) { //将文件保存到本机上 Response.Clear(); Response.AddHeader("Content-Disposition", "attachment; filename=" + HttpUtility.UrlEncode(Encoding.UTF8.GetBytes(fi.Name))); Response.AddHeader("Content-Length", fi.Length.ToString()); Response.ContentType = "application/octet-stream"; Response.Filter.Close(); Response.WriteFile(fi.FullName); Response.End(); } }
编码采用UTF-8所以标题不会乱码