ASP.NET中文件上傳下載方法集合
2006/11/29 13:46:52

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

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

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

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

  4、上傳Internet上的資源

  第一部分:

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

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

IServiceProvidERProvider=(IServiceProvider)HttpContext.Current;
HttpWorkerRequestwr=(HttpWorkerRequest)provider.GetService(typeof(HttpWorkerRequest));
byte[]bs=wr.GetPreloadedEntityBody();
.
if(!wr.IsEntireEntityBodyIsPreloaded())
{
 intn=1024;
 byte[]bs2=newbyte[n];
 while(wr.ReadEntityBody(bs2,n)>0)
 {
  ..
 }
}

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

  第二部分:

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

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

public class FileUpLoad
{
 public FileUpLoad()
 {}
 /**////
 /// 上傳文件名稱
 ///
 public string FileName
 {
  get
  {
   return fileName;
  }
  set
  {
   fileName = value;
  }
 }
 private string fileName;

 /**////
 /// 上傳文件路徑
 ///
 public string FilePath
 {
  get
  {
   return filepath;
  }
  set
  {
   filepath = value;
  }
 }
 private string filepath;

 /**////
 /// 文件擴展名
 ///
 public string FileExtension
 {
  get
  {
   return fileExtension;
  }
  set
  {
   fileExtension = value;
  }
 }
 private string fileExtension;
}

  另外我們還可以在配置文件中限制上傳文件的格式(App.Config):
<?XML version="1.0" encoding="gb2312" ?>
<Application>
<FileUpLoad>
<Format>.jpg|.gif|.png|.bmp
</FileUpLoad>
</Application>

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

public FileUpLoad UpLoadFile(HtmlInputFile InputFile,string filePath,string myfileName,bool isRandom)
{
 FileUpLoad fp = new FileUpLoad();
 string fileName,fileExtension;
 string saveName;

 //
 //建立上傳對象
 //
 HttpPostedFile postedFile = InputFile.PostedFile;

 fileName = System.IO.Path.GetFileName(postedFile.FileName);
 fileExtension = System.IO.Path.GetExtension(fileName);

 //
 //根據類型確定文件格式
 //
 AppConfig app = new AppConfig();
 string format = app.GetPath("FileUpLoad/Format");

 //
 //如果格式都不符合則返回
 //
 if(format.IndexOf(fileExtension)==-1)
 {
  throw new ApplicationException("上傳數據格式不合法");
 }

 //
 //根據日期和隨機數生成隨機的文件名
 //
 if(myfileName !

下一頁
返回列表
返回首頁 主站蜘蛛池模板: 一本色道久久综合亚洲精品高清| 久久午夜免费鲁丝片| 精品无码成人久久久久久| 国产大片线上免费看| 1000部拍拍拍18勿入免费凤凰福利 | 日本电影中文字幕| 亚洲午夜国产精品无码| 深爱五月激情网| 加勒比一本大道香蕉在线视频 | 国产一区二区视频免费| 国产自产21区| 国产精品另类激情久久久免费| hdmaturetube熟女xx视频韩国| 成人永久福利免费观看| 久久国产免费观看精品3| 校园放荡三个女同学| 亚洲日韩乱码中文字幕| 海角社区视频在线| 免费无码不卡视频在线观看| 老司机深夜福利影院| 国产嘿嘿嘿视频在线观看| 欧美激情视频网| 国产精品久久网| 2022年亚洲午夜一区二区福利| 在线观看免费成人| jealousvue熟睡入侵中| 性色AV无码一区二区三区人妻| 久久一本一区二区三区| 日韩中文字幕在线播放| 久久综合精品国产一区二区三区| 欧美变态口味重另类在线视频| 亚洲欧美日韩高清综合678| 理论片福利理论电影| 免费网站看v片在线成人国产系列 免费网站看v片在线香蕉 | 久久久无码精品亚洲日韩按摩 | 久久精品中文字幕一区| 暖暖免费高清日本一区二区三区| 亚洲人成色77777| 欧美成人在线视频| 亚洲欧洲免费无码| 没有被爱过的女人在线|