c/s架构文件传输
在做程序升级的功能中接触到文件下载的知识,这里找了一些代码给和我一样的初学者学习一下
服务端(这里以ASP.NET和ASP.NET MVC为例):
ASP.NET代码
1.TransmitFile方法输出文件
protected void Page_Load(object sender, EventArgs e) { string filename = Server.MapPath("test.7z"); string filenameAddHeader = "attachment;filename=" + filename + "\""; Response.ContentType = "application/x-zip-compressed"; //将文件名,类型写入http头信息 Response.AddHeader("Content-Disposition", filenameAddHeader); //微软提供的TransmitFile方法,可以防止传输大文件时,传输中断 Response.TransmitFile(filename); }
2.使用流输出的方法
protected void Page_Load(object sender, EventArgs e) { //WriteFile实现下载,此方法可能因大文件传输时间过长而中断 //客户端保存的文件名 string fileName = "test.7z"; //路径 string filePath = Server.MapPath("test.7z"); FileInfo fileInfo = new FileInfo(filePath); Response.Clear(); Response.ClearContent(); Response.ClearHeaders(); Response.AddHeader("Content-Disposition", "attachment;filename=" + fileName); Response.AddHeader("Content-Length", fileInfo.Length.ToString()); Response.AddHeader("Content-Transfer-Encoding", "binary"); Response.ContentType = "application/octet-stream"; Response.ContentEncoding = System.Text.Encoding.GetEncoding("gb2312"); Response.WriteFile(fileInfo.FullName); Response.Flush(); Response.End(); }
ASP.NET MVC代码
public ActionResult Index() { string fileName = Server.MapPath("test.7z"); string contentType = "application/x-zip-compressed"; string fileDownloadName = Path.GetFileName(fileName); //File方法输出 //参数: fileName:需要输出的文件;contentType:文件类型 ;fileDownloadName:向浏览器声明文件名 return File(fileName, contentType, fileDownloadName); }
C#客户端下载文件
#region 下载更新文件,从http头部获取文件名,返回文件名列表 /// <summary> /// 下载服务器更新文件,从http头部获取文件名,返回文件名列表 /// </summary> /// <param name="url">文件下载地址</param> /// <param name="filesSavePath">文件保存路径</param> /// <param name="filename">保存的文件名</param> public void DownLoadGetNameFromHttp(string url, string filesSavePath, ref string filename) { WebClient client = new WebClient(); client.OpenRead(url); string name = client.ResponseHeaders["Content-Disposition"].Replace("attachment;filename=", ""); if (name == null) { //如果从头部信息获取文件名为空,给name赋值默认名称 name = "DefaultNmae"; } filename = name; client.DownloadFile(url, filesSavePath + @"\" + name); } #endregion

浙公网安备 33010602011771号