成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

ASP.NET中的文件上傳下載方法集合

開發 后端
本文總結了在ASP.NET中一些文件上傳下載的方法。ASP.NET中的文件上傳下載是我們經常要用到的技術。

文件的上傳下載是我們在實際項目開發過程中經常需要用到的技術,這里給出幾種常見的方法,本文主要內容包括:

1、如何解決文件上傳大小的限制

2、以文件形式保存到服務器

3、轉換成二進制字節流保存到數據庫以及下載方法

4、上傳Internet上的資源

ASP.NET中文件上傳下載,***部分:

首先我們來說一下如何解決asp.net中的文件上傳大小限制的問題,我們知道在默認情況下asp.net的文件上傳大小限制為2M,一般情況下,我們可以采用更改Web.Config文件來自定義***文件大小,如下:

這樣上傳文件的***值就變成了4M,但這樣并不能讓我們無限的擴大 MaxRequestLength的值,因為asp.net會將全部文件載入內存后,再加以處理。解決的方法是利用隱含的 HttpWorkerRequest,用它的GetPreloadedEntityBody和ReadEntityBody方法從IIS為asp.net 建立的pipe里分塊讀取數據。實現方法如下:

  1. IServiceProvidERProvider=(IServiceProvider)HttpContext.Current;   
  2. HttpWorkerRequestwr=(HttpWorkerRequest)provider.GetService(typeof(HttpWorkerRequest));   
  3. byte[]bs=wr.GetPreloadedEntityBody();   
  4. .   
  5. if(!wr.IsEntireEntityBodyIsPreloaded())   
  6. {   
  7.  intn=1024;   
  8.  byte[]bs2=newbyte[n];   
  9.  while(wr.ReadEntityBody(bs2,n)>0)   
  10.  {   
  11.   ..   
  12.  }   
  13. }  
  14.  

這樣就可以解決了大文件的上傳問題了。

ASP.NET中文件上傳下載,第二部分:

下面我們來介紹如何以文件形式將客戶端的一個文件上傳到服務器并返回上傳文件的一些基本信息。

首先我們定義一個類,用來存儲上傳的文件的信息(返回時需要)。

  1. public class FileUpLoad   
  2. {   
  3.  public FileUpLoad()   
  4.  {}   
  5.  /**////   
  6.  /// 上傳文件名稱   
  7.  ///   
  8.  public string FileName   
  9.  {   
  10.   get   
  11.   {   
  12.    return fileName;   
  13.   }   
  14.   set   
  15.   {   
  16.    fileName = value;   
  17.   }   
  18.  }   
  19.  private string fileName;   
  20.  /**////   
  21.  /// 上傳文件路徑   
  22.  ///   
  23.  public string FilePath   
  24.  {   
  25.   get   
  26.   {   
  27.    return filepath;   
  28.   }   
  29.   set   
  30.   {   
  31.    filepath = value;   
  32.   }   
  33.  }   
  34.  private string filepath;   
  35.  /**////   
  36.  /// 文件擴展名   
  37.  ///   
  38.  public string FileExtension   
  39.  {   
  40.   get   
  41.   {   
  42.    return fileExtension;   
  43.   }   
  44.   set   
  45.   {   
  46.    fileExtension = value;   
  47.   }   
  48.  }   
  49.  private string fileExtension;   
  50. }  
  51.  

另外我們還可以在配置文件中限制上傳文件的格式(App.Config):

  1. <?XML version="1.0" encoding="gb2312" ?>   
  2. <Application>   
  3. <FileUpLoad>  
  4. <Format>.jpg|.gif|.png|.bmp   
  5. </FileUpLoad>   
  6. </Application> 

這樣我們就可以開始寫我們的上傳文件的方法了,如下:

  1. public FileUpLoad UpLoadFile(HtmlInputFile InputFile,string filePath,string myfileName,bool isRandom)   
  2. {   
  3.  FileUpLoad fp = new FileUpLoad();   
  4.  string fileName,fileExtension;   
  5.  string saveName;   
  6.  //   
  7.  //建立上傳對象   
  8.  //   
  9.  HttpPostedFile postedFile = InputFile.PostedFile;   
  10.  fileName = System.IO.Path.GetFileName(postedFile.FileName);   
  11.  fileExtension = System.IO.Path.GetExtension(fileName);   
  12.  //   
  13.  //根據類型確定文件格式   
  14.  //   
  15.  AppConfig app = new AppConfig();   
  16.  string format = app.GetPath("FileUpLoad/Format");   
  17.  //   
  18.  //如果格式都不符合則返回   
  19.  //   
  20.  if(format.IndexOf(fileExtension)==-1)   
  21.  {   
  22.   throw new ApplicationException("上傳數據格式不合法");   
  23.  }   
  24.  //   
  25.  //根據日期和隨機數生成隨機的文件名   
  26.  //   
  27.  if(myfileName != string.Empty)   
  28.  {   
  29.   fileName = myfileName;   
  30.  }   
  31.  if(isRandom)   
  32.  {   
  33.   Random objRand = new Random();   
  34.   System.DateTime date = DateTime.Now;   
  35.   //生成隨機文件名   
  36.   saveName = date.Year.ToString() + date.Month.ToString() + date.Day.ToString() + date.Hour.ToString() + date.Minute.ToString() + date.Second.ToString() + Convert.ToString(objRand.Next(99)*97 + 100);   
  37.   fileName = saveName + fileExtension;   
  38.  }   
  39.  string phyPath = HttpContext.Current.Request.MapPath(filePath);   
  40.  //判斷路徑是否存在,若不存在則創建路徑   
  41.  DirectoryInfo upDir = new DirectoryInfo(phyPath);   
  42.  if(!upDir.Exists)   
  43.  {   
  44.   upDir.Create();   
  45.  }   
  46.  //   
  47.  //保存文件   
  48.  //   
  49.  try   
  50.  {   
  51.   postedFile.SaveAs(phyPath + fileName);   
  52.   fp.FilePath = filePath + fileName;   
  53.   fp.FileExtension = fileExtension;   
  54.   fp.FileName = fileName;   
  55.  }   
  56.  catch   
  57.  {   
  58.   throw new ApplicationException("上傳失敗!");   
  59.  }   
  60.  //返回上傳文件的信息   
  61.  return fp;   
  62. }  
  63.  

然后我們在上傳文件的時候就可以調用這個方法了,將返回的文件信息保存到數據庫中,至于下載,就直接打開那個路徑就OK了。

ASP.NET中文件上傳下載,第三部分:

這里我們主要說一下如何以二進制的形式上傳文件以及下載。首先說上傳,方法如下:

  1. public byte[] UpLoadFile(HtmlInputFile f_IFile)   
  2. {   
  3.  //獲取由客戶端指定的上傳文件的訪問   
  4.  HttpPostedFile upFile=f_IFile.PostedFile;   
  5.  //得到上傳文件的長度   
  6.  int upFileLength=upFile.ContentLength;   
  7.  //得到上傳文件的客戶端MIME類型   
  8.  string contentType = upFile.ContentType;   
  9.  byte[] FileArray=new Byte[upFileLength];  
  10.  
  11.  Stream fileStream=upFile.InputStream;  
  12.  
  13.  fileStream.Read(FileArray,0,upFileLength);   
  14.  return FileArray;   
  15. }  
  16.  

這個方法返回的就是上傳的文件的二進制字節流,這樣我們就可以將它保存到數據庫了。下面說一下這種形式的下載,也許你會想到這種方式的下載就是新建一個 aspx頁面,然后在它的Page_Load()事件里取出二進制字節流,然后再讀出來就可以了,其實這種方法是不可取的,在實際的運用中也許會出現無法打開某站點的錯誤,我一般采用下面的方法:

首先,在Web.config中加入:

  1. <add verb="*" path="openfile.aspx" type="RuixinOA.Web.BaseClass.OpenFile, RuixinOA.Web"/>  
  2.  

這表示我打開openfile.aspx這個頁面時,系統就會自動轉到執行RuixinOA.Web.BaseClass.OpenFile 這個類里的方法,具體實現如下:

  1. using System;   
  2. using System.Data;   
  3. using System.Web;   
  4. using System.IO;   
  5. using Ruixin.WorkFlowDB;   
  6. using RXSuite.Base;   
  7. using RXSuite.Component;   
  8. using RuixinOA.BusinessFacade;   
  9. namespace RuixinOA.Web.BaseClass   
  10. {   
  11.  /**////   
  12.  /// NetUFile 的摘要說明。   
  13.  ///   
  14.  public class OpenFile : IHttpHandler   
  15.  {   
  16.   public void ProcessRequest(HttpContext context)   
  17.   {   
  18.    //從數據庫中取出要下載的文件信息   
  19.    RuixinOA.BusinessFacade.RX_OA_FileManager os = new RX_OA_FileManager();   
  20.    EntityData data = os.GetFileDetail(id);   
  21.    if(data != null && data.Tables["RX_OA_File"].Rows.Count >0)   
  22.    {   
  23.     DataRow dr = (DataRow)data.Tables["RX_OA_File"].Rows[0];   
  24.     context.Response.Buffer = true;   
  25.     context.Response.Clear();   
  26.     context.Response.ContentType = dr["CContentType"].ToString();   
  27.     context.Response.AddHeader("Content-Disposition","attachment;filename=" + HttpUtility.UrlEncode(dr["CTitle"].ToString()));   
  28.     context.Response.BinaryWrite((Byte[])dr["CContent"]);   
  29.     context.Response.Flush();   
  30.     context.Response.End();   
  31.    }   
  32.   }   
  33.   public bool IsReusable   
  34.   {     
  35.    get { return true;}   
  36.   }   
  37.  }   
  38. }  
  39.  

執行上面的方法后,系統會提示用戶選擇直接打開還是下載。這一部分我們就說到這里。

ASP.NET中文件上傳下載,第四部分:

這一部分主要說如何上傳一個Internet上的資源到服務器。

首先需要引用 System.Net 這個命名空間,然后操作如下:

  1. HttpWebRequest hwq = (HttpWebRequest)WebRequest.Create("http://localhost/pwtest/webform1.aspx");   
  2. HttpWebResponse hwr = (HttpWebResponse)hwq.GetResponse();   
  3. byte[] bytes = new byte[hwr.ContentLength];   
  4. Stream stream = hwr.GetResponseStream();   
  5. stream.Read(bytes,0,Convert.ToInt32(hwr.ContentLength));   
  6. //HttpContext.Current.Response.BinaryWrite(bytes);  
  7.  

HttpWebRequest 可以從Internet上讀取文件,因此可以很好的解決這個問題。

【編輯推薦】

  1. ASP.NET表單身份驗證的實現方法
  2. JQuery Form Ajax提交asp.net表單時失敗
  3. ASP.NET安裝部署問題總結
  4. 在APACHE上運行ASP.NET經驗總結
  5. ASP.NET在線學習資源總匯

     

責任編輯:book05 來源: cnblogs
相關推薦

2023-09-06 08:33:30

2009-07-03 14:15:54

JSP SmartUp

2009-10-30 14:03:59

ASP.NET上傳文件

2009-07-20 16:09:39

2024-05-20 13:06:18

2009-07-07 13:45:04

jspsmart

2018-04-20 16:15:42

Koa2上傳下載

2015-02-11 16:34:49

微信SDK

2009-07-21 15:38:31

2009-07-29 10:02:49

ASP.NET上傳

2009-07-21 16:23:57

2010-03-08 11:34:45

Linux上傳下載指令

2009-07-24 15:07:56

ASP.NET上傳文件

2009-07-21 13:01:07

ASP.NET上傳文件

2009-07-27 17:32:39

Web ServiceASP.NET

2010-02-05 08:32:32

ASP.NET MVC

2009-07-20 18:06:26

ASP.NET限制上傳

2009-07-31 11:45:42

ASP.NET文件下載

2011-06-08 11:36:16

ASP.NETrender

2009-07-22 17:28:07

CSS文件ASP.NET 2.0
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 日本在线免费 | 欧美多人在线 | 久久久精品一区二区三区 | 欧美日产国产成人免费图片 | 国产最好的av国产大片 | 特级生活片| 日本中出视频 | 日本涩涩视频 | 国产成人免费视频网站视频社区 | 天堂资源 | 久久精品99国产精品 | 免费骚视频 | 国产一区二区在线免费视频 | 欧美午夜激情在线 | 亚洲成人观看 | 中文字幕 欧美 日韩 | 欧美亚洲第一区 | 国产精品久久久久久久久久久久久 | 国产精品久久国产精品 | 欧美一区二区 | 色黄爽 | 91色视频在线 | 91玖玖| 涩涩视频网站在线观看 | 成人精品一区二区三区 | 中文成人在线 | 国产精品美女久久久久久久网站 | 欧美日韩在线一区二区三区 | 99久热在线精品视频观看 | 青青草视频网 | 天久久 | av天天爽| 免费在线成人 | a级大片免费观看 | 久久久久久高潮国产精品视 | 成av在线| 日韩毛片在线观看 | 青青草原精品99久久精品66 | 最新日韩av | 一区二区三区在线观看免费视频 | 久久国产精品免费视频 |