首页 > 代码库 > 文件下载
文件下载
嗯,今天看了会儿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 // 若文件不存在,返回false67 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 }
文件下载
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。