嗯,今天看了會兒ASP.NET文件下載的代碼,話很少說,直接上代碼瀏覽器
1 // 上傳文件 2 protected void Button1_Click(object sender, EventArgs e) { 3 4 string path = "~/upload/"; 5 6 string FileName = FileUpload1.FileName; 7 8 // 獲取後綴名 9 string Suffix = FileName.Substring(FileName.LastIndexOf('.')); 10 11 // 獲取新的文件名 12 DateTime dateNow = DateTime.Now; 13 FileName = dateNow.ToString("yyyyMMddHHmmssffff") + Suffix; 14 15 // 獲取絕對路徑 16 path = Server.MapPath(path); 17 18 // 檢測是否存在此路徑,沒有就建立 19 if (!Directory.Exists(path)) 20 // 建立路徑 21 Directory.CreateDirectory(path); 22 23 // 拼接文件路徑 24 path += FileName; 25 26 // 上傳文件 27 FileUpload1.SaveAs(path); 28 } 29 30 // 下載文件 31 protected void Button2_Click(object sender, EventArgs e) { 32 33 // 默認下載路徑 34 string path = "~/upload/"; 35 path = Server.MapPath(path); 36 37 // 獲取指定文件夾 38 DirectoryInfo dir = new DirectoryInfo(path); 39 // 若文件夾不存在,返回 40 if (!dir.Exists) return; 41 42 // 獲取指定文件夾下,全部文件 43 FileInfo[] file = dir.GetFiles(); 44 45 // 當指定文件夾下存在文件時, 46 if (file != null && file.Length > 0) { 47 // 取最後一個文件的文件名 48 string fileName = file[file.Length - 1].Name; 49 // 執行下載方法,返回bool,表示是否下載成功 50 bool IsSuccess = DownFile("~/upload/" + fileName); 51 52 } 53 } 54 55 /// <summary> 56 /// 下載文件方法 57 /// </summary> 58 /// <param name="path">文件的相對路徑</param> 59 public bool DownFile(string path) { 60 61 // 將相對路徑轉爲絕對路徑 62 path = Server.MapPath(path); 63 64 // 根據絕對路徑,查找文件 65 FileInfo file = new FileInfo(path); 66 // 若文件不存在,返回false 67 if (!file.Exists) 68 return false; 69 70 // 清理各類內容 71 Response.Clear(); 72 Response.ClearContent(); 73 Response.ClearHeaders(); 74 75 // 指定下載後的文件名 76 Response.AddHeader("Content-Disposition", "attachment;filename=" + file.Name); 77 // 獲取下載的文件大小,會在瀏覽器中顯示 78 Response.AddHeader("Content-Length", file.Length.ToString()); 79 // 設置文件編碼格式,能夠爲非ASCII 字符,也能夠爲超長字符(超過1000) 80 Response.AddHeader("Content-Transfer-Encoding", "binary"); 81 // 設置字符到瀏覽器的編碼,可解決中文亂碼,不徹底 82 Response.ContentEncoding = System.Text.Encoding.GetEncoding("gb2312"); 83 // 設置能夠爲任意文件後綴 84 Response.ContentType = "application/octet-stream"; 85 86 // 將文件放入HTTP輸出流 87 Response.WriteFile(file.FullName); 88 89 // 對輸出的內容進行緩衝,防止頁面卡死 90 Response.Buffer = true; 91 // 將緩存的內容輸出 92 Response.Flush(); 93 // 結束輸出 94 Response.End(); 95 96 return true; 97 }