.net c# 文件的上传和下载

1.文件的上传:

 1          string pubFileName = "";  
 2          string pubFilePath = "";  
 3          if (this.FileUpload1.HasFile)  
 4          {  
 5              int i = this.FileUpload1.PostedFile.ContentLength;  
 6              if (this.FileUpload1.PostedFile.ContentLength > 10485760)  
 7              {  
 8                  Response.Write("<script>alert('10M以下')</script>");  
 9                  return;  
10              }  
11              pubFileName = this.FileUpload1.FileName;  
12              pubFilePath = Server.MapPath("~/") + "\\psfile_res\\";  
13              this.FileUpload1.PostedFile.SaveAs(pubFilePath + "" + pubFileName);  
14          }  
15   
16          string resTypeName = this.DropDownList_resType.SelectedValue.Trim();  
17          string depName = this.DropDownList_depName.SelectedValue.Trim();  
18          string pubFilePID = this.pre_username;  
19          string pubDate = DateTime.Now.ToString("yyyy-MM-dd");  
20 int loadCount=0;  
21   
22 Maticsoft.Model.t_pubFile model=new Maticsoft.Model.t_pubFile();  
23 model.pubFileName=pubFileName;  
24 model.resTypeName=resTypeName;  
25 model.depName=depName;  
26 model.pubFilePID=pubFilePID;  
27 model.pubDate=pubDate;  
28 model.pubFilePath=pubFilePath;  
29 model.loadCount=loadCount;  
30   
31 Maticsoft.BLL.t_pubFile bll=new Maticsoft.BLL.t_pubFile();  
32 bll.Add(model);  
33 Maticsoft.Common.MessageBox.ShowAndRedirect(this,"上传成功!","add.aspx");  

2.文件的下载:

  1. using System;  
  2. using System.Collections.Generic;  
  3. using System.IO;  
  4. using System.Linq;  
  5. using System.Threading;  
  6. using System.Web;  
  7.   
  8. namespace MCS.ZB.PetrochinaSupport.Common  
  9. {  
  10.     public class FileDownload  
  11.     {  
  12.   
  13.         /// <summary>  
  14.         ///  输出硬盘文件,提供下载 支持大文件、续传、速度限制、资源占用小  
  15.         /// </summary>  
  16.         /// <param name="_Request">Page.Request对象</param>  
  17.         /// <param name="_Response">Page.Response对象</param>  
  18.         /// <param name="_fileName">下载文件名</param>  
  19.         /// <param name="_fullPath">带文件名下载路径</param>  
  20.         /// <param name="_speed">每秒允许下载的字节数</param>  
  21.         /// <returns>返回是否成功</returns>  
  22.         //---------------------------------------------------------------------  
  23.         //调用:  
  24.         // string FullPath=Server.MapPath("count.txt");  
  25.         // ResponseFile(this.Request,this.Response,"count.txt",FullPath,100);  
  26.         //---------------------------------------------------------------------  
  27.         public static bool ResponseFile(HttpRequest _Request, HttpResponse _Response, string _fileName, string _fullPath, long _speed)  
  28.         {  
  29.             try  
  30.             {  
  31.                 FileStream myFile = new FileStream(_fullPath, FileMode.Open, FileAccess.Read, FileShare.ReadWrite);  
  32.                 BinaryReader br = new BinaryReader(myFile);  
  33.                 try  
  34.                 {  
  35.                     _Response.AddHeader("Accept-Ranges", "bytes");  
  36.                     _Response.Buffer = false;  
  37.   
  38.                     long fileLength = myFile.Length;  
  39.                     long startBytes = 0;  
  40.                     int pack = 10240;  //10K bytes  
  41.                     int sleep = (int)Math.Floor((double)(1000 * pack / _speed)) + 1;  
  42.   
  43.                     if (_Request.Headers["Range"] != null)  
  44.                     {  
  45.                         _Response.StatusCode = 206;  
  46.                         string[] range = _Request.Headers["Range"].Split(new char[] { '=', '-' });  
  47.                         startBytes = Convert.ToInt64(range[1]);  
  48.                     }  
  49.                     _Response.AddHeader("Content-Length", (fileLength - startBytes).ToString());  
  50.                     if (startBytes != 0)  
  51.                     {  
  52.                         _Response.AddHeader("Content-Range", string.Format(" bytes {0}-{1}/{2}", startBytes, fileLength - 1, fileLength));  
  53.                     }  
  54.   
  55.                     _Response.AddHeader("Connection", "Keep-Alive");  
  56.                     _Response.ContentType = "application/octet-stream";  
  57.                     _Response.AddHeader("Content-Disposition", "attachment;filename=" + HttpUtility.UrlEncode(_fileName, System.Text.Encoding.UTF8));  
  58.   
  59.                     br.BaseStream.Seek(startBytes, SeekOrigin.Begin);  
  60.                     int maxCount = (int)Math.Floor((double)((fileLength - startBytes) / pack)) + 1;  
  61.   
  62.                     for (int i = 0; i < maxCount; i++)  
  63.                     {  
  64.                         if (_Response.IsClientConnected)  
  65.                         {  
  66.                             _Response.BinaryWrite(br.ReadBytes(pack));  
  67.                             Thread.Sleep(sleep);  
  68.                         }  
  69.                         else  
  70.                         {  
  71.                             i = maxCount;  
  72.                         }  
  73.                     }  
  74.                 }  
  75.                 catch (Exception e)  
  76.                 {  
  77.                     return false;  
  78.                 }  
  79.                 finally  
  80.                 {  
  81.                     br.Close();  
  82.                     myFile.Close();  
  83.                 }  
  84.             }  
  85.             catch  
  86.             {  
  87.                 return false;  
  88.             }  
  89.             return true;  
  90.         }  
  91.   
  92.   
  93.     }  
  94. }  

posted on 2017-06-09 08:48  alex5211314  阅读(228)  评论(0编辑  收藏  举报

导航