婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁(yè) > 知識(shí)庫(kù) > ASP.NET MVC文件上傳教程(二)

ASP.NET MVC文件上傳教程(二)

熱門標(biāo)簽:外呼電話機(jī)器人成本 地圖標(biāo)注軟件免費(fèi)下載 網(wǎng)絡(luò)電話外呼系統(tǒng)上海 百應(yīng)電話機(jī)器人外呼系統(tǒng) 聯(lián)通官網(wǎng)400電話辦理 西寧呼叫中心外呼系統(tǒng)線路商 400電話辦理怎么樣 蘇州如何辦理400電話 臨沂智能電話機(jī)器人加盟

上文ASP.NET MVC 文件上傳教程(一)我們講了簡(jiǎn)單的上傳以及需要注意的地方,查相關(guān)資料時(shí),感覺(jué)上傳里面涉及到的內(nèi)容還是比較多,于是就將上傳這一塊分為幾節(jié)來(lái)處理,同時(shí)后續(xù)也會(huì)講到關(guān)于做上傳時(shí)遺漏的C#應(yīng)該注意的地方,及時(shí)進(jìn)行查漏補(bǔ)缺,盡量將這一塊完善起來(lái)。

引入
上一節(jié)我們講到了上傳這一塊,有朋友提出未涉及到大文件的上傳這一塊,思前想后還是來(lái)試著做做,畢竟之前沒(méi)怎么去仔細(xì)考慮過(guò)這個(gè)問(wèn)題,尤其還可以聯(lián)系實(shí)際開(kāi)發(fā)中創(chuàng)建文件夾等一系列問(wèn)題,同時(shí)關(guān)于上傳在網(wǎng)上隨便找找都充斥著大量的組件,我們何必再去造輪子,我需要做的是只是對(duì)基礎(chǔ)的回顧以及進(jìn)一步深入以及在做的過(guò)程中發(fā)現(xiàn)一些細(xì)節(jié)性的問(wèn)題并解決就足矣,不喜勿噴。

深入上傳
再次聲明對(duì)于上傳可以顯示上傳進(jìn)度之類我們不去做過(guò)多探討,有這樣的組件,自行去找,我們只需實(shí)現(xiàn)比較核心的這一塊即可。

我們可以想象這一樣一個(gè)場(chǎng)景:比如在博客園中,每個(gè)博客者都可以上傳文件如圖片、腳本之類,我們可以通過(guò)園友名稱來(lái)創(chuàng)建每個(gè)園友上傳的文件,接下來(lái)我們來(lái)實(shí)現(xiàn)這樣的一個(gè)場(chǎng)景。

既然是對(duì)應(yīng)博客的名稱創(chuàng)建文件,也就是需要對(duì)應(yīng)的博客這樣的一個(gè)類。如下:

 public class BlogSample
 {
  public string UserName { get; set; }

  public string Id { get; set; }
 }

我們通過(guò)博客名稱來(lái)創(chuàng)建文件夾并在該文件夾下以唯一的Id來(lái)創(chuàng)建子文件夾,在該Id文件夾下的附件( atttachment )中存儲(chǔ)上傳的文件。接下來(lái)我們需要梳理整個(gè)上傳文件的過(guò)程。難道就把要上傳的文件直接到上傳到對(duì)應(yīng)的文件夾嗎,這么做顯然不是最優(yōu)的,當(dāng)有上傳中斷時(shí)則在文件夾創(chuàng)建的文件不是完整的則是垃圾文件,而我們直接先創(chuàng)建一個(gè)臨時(shí)文件,即使上傳失敗我們可以定期清理臨時(shí)文件也就是垃圾文件,若未中斷,上傳完畢時(shí)則將臨時(shí)文件移動(dòng)到我們對(duì)應(yīng)的文件夾中。通過(guò)我們實(shí)際下載文件時(shí)很明顯看的出也是這么做的。接下來(lái)我們開(kāi)始進(jìn)行實(shí)現(xiàn)。

(1)我們給出一個(gè)關(guān)于上傳的 UploadManager 靜態(tài)類,我們可以寫死上傳的文件夾名稱或者通過(guò)配置文件自定義上傳文件夾名稱。

  static UploadManager()
  {
   //從配置文件中獲取上傳文件夾
   if (String.IsNullOrWhiteSpace(WebConfigurationManager.AppSettings["UploadFolder"]))
    UploadFolderRelativePath = @"~/upload";
   else
    UploadFolderRelativePath = WebConfigurationManager.AppSettings["UploadFolder"];

   UploadFolderPhysicalPath = HostingEnvironment.MapPath(UploadFolderRelativePath);

   if (!Directory.Exists(UploadFolderPhysicalPath))
    Directory.CreateDirectory(UploadFolderPhysicalPath);
  }

上述已經(jīng)表明可以自定義上傳文件夾在配置文件中(給出上傳虛擬路徑),例如如下:

  !--add key="UploadFolder" value="~/UploadFile/">-->

(2)保存文件的核心方法

  [SuppressMessage("Microsoft.Usage", "CA2202:Do not dispose objects multiple times")]
  public static bool SaveFile(Stream stream, string fileName, string userName, string guid)
  {
   string tempPath = string.Empty, targetPath = string.Empty;

   try
   {
    string tempFileName = GetTempFilePath(fileName);

    if (userName != null)
    {
     var contentType = userName;
     var contentId = guid;

     tempPath = GetTempFilePath(tempFileName);
     targetPath = GetTargetFilePath(fileName, contentType, contentId, string.Empty, FilesSubdir);


     //若上傳文件夾中子文件夾未存在則創(chuàng)建
     var file = new FileInfo(targetPath);
     if (file.Directory != null  !file.Directory.Exists)
      file.Directory.Create();

     using (FileStream fs = File.Open(tempPath, FileMode.Append))
     {
      if (stream.Length > 0)
      {
       SaveFile(stream, fs);
      }
      fs.Close();
     }
     //上傳完畢將臨時(shí)文件移動(dòng)到目標(biāo)文件
     File.Move(tempPath, targetPath);
    }
   }
   catch (Exception)
   {
    // 若上傳出錯(cuò),則刪除上傳到文件夾文件
    if (File.Exists(targetPath))
     File.Delete(targetPath);

    // 刪除臨時(shí)文件
    if (File.Exists(tempPath))
     File.Delete(tempPath);

    return false;
   }
   finally
   {
    // 刪除臨時(shí)文件
    if (File.Exists(tempPath))
     File.Delete(tempPath);
   }
   return true;
  }

(3)循環(huán)讀取流到文件流中

   /// summary>
  /// 循環(huán)讀取流到文件流中
  /// /summary>
  /// param name="stream">/param>
  /// param name="fs">/param>
  public static void SaveFile(Stream stream, FileStream fs)
  {
   var buffer = new byte[4096];
   int bytesRead;
   while ((bytesRead = stream.Read(buffer, 0, buffer.Length)) != 0)
   {
    fs.Write(buffer, 0, bytesRead);
   }
  }

(4)開(kāi)始寫入測(cè)試數(shù)據(jù),進(jìn)行調(diào)用方法:

   var testSample = new BlogSample() { UserName = "xpy0928", Id = Guid.NewGuid().ToString("N") };
   if (ModelState.IsValid)
   {
    var fileName = bModel.BlogPhoto.FileName;
    var success = UploadManager.SaveFile(bModel.BlogPhoto.InputStream, fileName, testSample.UserName, testSample.Id);
    if (!success)
    {
     // TODO(your code)
    }
    //var filePath = Server.MapPath(string.Format("~/{0}", "File"));
    //bModel.BlogPhoto.SaveAs(Path.Combine(filePath, fileName));
    ModelState.Clear();
   }

接下來(lái)我們來(lái)進(jìn)行測(cè)試,通過(guò)上傳一個(gè)84M的文件來(lái)看看效果(稍等片刻,文件有點(diǎn)大)。

不好意思,令我大失所望,和昨天出現(xiàn)的錯(cuò)誤不一樣,今天出錯(cuò)是:超過(guò)最大請(qǐng)求長(zhǎng)度。我們接下來(lái)再來(lái)看看昨天所說(shuō),我的IIS為10.0,也就是在IIS 7+上,通過(guò)昨天那樣設(shè)置應(yīng)該是沒(méi)問(wèn)題的,難道和另外一個(gè)設(shè)置有關(guān)嗎,我們看看配置文件中的配置。

httpRuntime targetFramework="4.5"/>
未進(jìn)行設(shè)置,超過(guò)其默認(rèn)設(shè)置28.6M就出錯(cuò)了嗎,我們?cè)僭O(shè)置為2G看看。

httpRuntime targetFramework="4.5" executionTimeout="1100"  maxRequestLength="2147483647"/>


好,上傳成功也未出現(xiàn)上述錯(cuò)誤。

結(jié)語(yǔ)
這一節(jié)我們講了一下利用流來(lái)進(jìn)行大文件的處理,不過(guò)還是出現(xiàn)了一點(diǎn)小問(wèn)題,和昨天再一起做一次總結(jié):

(1)在IIS 5和IIS 6中,默認(rèn)文件上傳的最大為4兆,當(dāng)上傳的文件大小超過(guò)4兆時(shí),則會(huì)得到錯(cuò)誤信息,但是我們通過(guò)如下來(lái)設(shè)置文件大小。

system.web>
 httpRuntime maxRequestLength="2147483647" executionTimeout="100000" />
/system.web>

(2)在IIS 7+,默認(rèn)文件上傳的最大為28.6兆,當(dāng)超過(guò)其默認(rèn)設(shè)置大小,同樣會(huì)得到錯(cuò)誤信息,但是我們卻可以通過(guò)如下來(lái)設(shè)置文件上傳大小(同時(shí)也要進(jìn)行如上設(shè)置)。

system.webServer>
 security>
 requestFiltering>
  requestLimits maxAllowedContentLength="2147483647" />
 /requestFiltering>
 /security>
/system.webServer>

關(guān)于在配置文件中如何設(shè)置文件大小而不出錯(cuò),總算做了一個(gè)最終的總結(jié),有收獲,繼續(xù)Fighting。
本文作者:Recluse_Xpy
本文鏈接:http://www.cnblogs.com/CreateMyself/p/5419594.html
以上就是關(guān)于ASP.NET MVC 文件上傳的全部?jī)?nèi)容介紹,希望對(duì)大家的學(xué)習(xí)有所幫助。

您可能感興趣的文章:
  • ASP.NET MVC HttpPostedFileBase文件上傳的實(shí)例代碼
  • ASP.NET MVC4 利用uploadify.js多文件上傳
  • asp.net core mvc實(shí)現(xiàn)文件上傳實(shí)例
  • asp.net mvc 實(shí)現(xiàn)文件上傳帶進(jìn)度條的思路與方法
  • 解決ASP.NET Core Mvc文件上傳限制問(wèn)題實(shí)例
  • ASP.NET MVC 文件上傳教程(一)
  • ASP.NET MVC5實(shí)現(xiàn)文件上傳與地址變化處理(5)
  • ASP.NET MVC處理文件上傳的小例子
  • 用Fine Uploader+ASP.NET MVC實(shí)現(xiàn)ajax文件上傳[代碼示例]
  • ASP.NET MVC實(shí)現(xiàn)批量文件上傳

標(biāo)簽:甘肅 聊城 臨夏 清遠(yuǎn) 海西 慶陽(yáng) 中衛(wèi)

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《ASP.NET MVC文件上傳教程(二)》,本文關(guān)鍵詞  ASP.NET,MVC,文件,上傳,教程,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問(wèn)題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無(wú)關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《ASP.NET MVC文件上傳教程(二)》相關(guān)的同類信息!
  • 本頁(yè)收集關(guān)于ASP.NET MVC文件上傳教程(二)的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av
    成人丝袜视频网| 久久精品一区二区| 日韩欧美国产小视频| 亚洲另类春色校园小说| 国产suv精品一区二区883| 欧美成人女星排名| 日本女优在线视频一区二区| 91高清视频免费看| 北条麻妃国产九九精品视频| 成人性生交大合| 亚洲综合色视频| 亚洲va韩国va欧美va精品 | 九九**精品视频免费播放| 蜜桃久久久久久| 久久国产精品第一页| 国产麻豆9l精品三级站| 91麻豆.com| 555夜色666亚洲国产免| 久久久精品国产免费观看同学| 国产日产欧美精品一区二区三区| 国产精品灌醉下药二区| 日韩欧美视频在线| 日韩成人精品在线观看| 日本女人一区二区三区| 91丨九色丨蝌蚪丨老版| 亚洲素人一区二区| 一本色道**综合亚洲精品蜜桃冫| 亚洲色图色小说| 在线免费亚洲电影| 热久久免费视频| 久久婷婷国产综合精品青草| 国产98色在线|日韩| 日韩美女精品在线| 一本大道av伊人久久综合| 亚洲gay无套男同| 欧美变态凌虐bdsm| 成人精品视频一区二区三区 | 欧美系列日韩一区| 日韩电影在线免费| 久久品道一品道久久精品| 从欧美一区二区三区| 一区二区三区视频在线看| 欧美一区二区播放| 不卡的av中国片| 国产一区日韩二区欧美三区| 欧美一区二区三区免费观看视频| thepron国产精品| 亚洲视频一区在线观看| 在线观看91视频| 美女被吸乳得到大胸91| 欧美国产精品中文字幕| 在线观看国产日韩| 免费成人深夜小野草| 精品精品欲导航| 粉嫩蜜臀av国产精品网站| 亚洲综合色丁香婷婷六月图片| 欧美一卡二卡三卡四卡| 国产99久久久久| 亚洲国产精品久久不卡毛片| 久久这里都是精品| 一本大道久久a久久精品综合| 麻豆精品一二三| 亚洲人成伊人成综合网小说| 久久超碰97中文字幕| 美腿丝袜亚洲综合| 91麻豆文化传媒在线观看| 日本不卡视频在线观看| 中文字幕中文在线不卡住| 欧美日韩精品福利| 波波电影院一区二区三区| 久久91精品国产91久久小草| 亚洲一区二区三区四区五区中文| 精品国产一区二区三区四区四| 欧美专区在线观看一区| 成人午夜av在线| 日本免费新一区视频| 亚洲美腿欧美偷拍| 精品国产一区a| 在线欧美日韩国产| 9人人澡人人爽人人精品| 精品伊人久久久久7777人| 亚洲va欧美va人人爽| 悠悠色在线精品| 精品国产123| 欧美一区二区在线免费观看| 欧美视频一区二区| 色综合久久久网| 成人av小说网| 欧美v国产在线一区二区三区| 亚洲高清免费视频| 麻豆国产精品777777在线| 国产日韩欧美精品电影三级在线| 欧美高清激情brazzers| 91免费精品国自产拍在线不卡| 国产精品 欧美精品| 亚洲欧洲av在线| 国产精品嫩草影院av蜜臀| 久久精品欧美日韩精品| 久久久久久久久久久久电影| 欧美v日韩v国产v| 久久香蕉国产线看观看99| 久久影院视频免费| 久久久.com| 国产欧美一区二区精品秋霞影院| www国产成人| 久久久久久免费毛片精品| 日韩精品一区二区三区视频播放| 日韩美女一区二区三区四区| 精品粉嫩超白一线天av| 久久久久久麻豆| 国产精品久久久久久久久免费樱桃 | 久久99国产乱子伦精品免费| 国产成人亚洲综合a∨猫咪| 日韩视频在线你懂得| 欧美高清一级片在线| 欧美性猛交xxxxxx富婆| 欧美视频在线一区| 555夜色666亚洲国产免| 日韩欧美一级二级三级| 日韩精品一区二区三区在线观看 | 国产成人午夜视频| 国产激情视频一区二区三区欧美| 精品亚洲aⅴ乱码一区二区三区| 国产一区美女在线| 成人av综合一区| 91浏览器在线视频| 欧美精品久久一区二区三区| 91麻豆精品国产91久久久更新时间 | 蜜桃av一区二区| 国内一区二区在线| 成人免费高清在线观看| 欧美性极品少妇| 精品久久免费看| 国产精品国产三级国产aⅴ原创| 亚洲美女视频一区| 日韩不卡免费视频| 国产精品一区二区三区四区| 色综合一区二区| 日韩女优视频免费观看| 国产精品久久久久影院老司| 日欧美一区二区| 国产99一区视频免费| 欧美日韩精品久久久| 国产欧美日韩麻豆91| 亚洲综合清纯丝袜自拍| 国产综合成人久久大片91| 91蜜桃免费观看视频| 欧美一区欧美二区| 亚洲婷婷国产精品电影人久久| 日韩在线一区二区三区| 成人av网址在线观看| 欧美一区二区三区色| 中文字幕制服丝袜成人av| 日韩影视精彩在线| 国产91精品露脸国语对白| 欧美日韩国产综合一区二区 | 久久精品国内一区二区三区| 国产成人av一区二区三区在线 | 欧美激情综合在线| 亚洲国产综合色| 国产ts人妖一区二区| 欧美一二三区在线观看| 1024国产精品| 麻豆精品视频在线观看视频| 91在线一区二区| 久久综合色之久久综合| 天天影视网天天综合色在线播放| av影院午夜一区| 国产成人在线影院| 日韩欧美123| 日韩国产欧美在线观看| 色先锋久久av资源部| 国产午夜精品在线观看| 蜜臀久久99精品久久久久宅男| 在线观看www91| 亚洲精品视频在线| 成人av中文字幕| 久久伊人中文字幕| 美女一区二区三区| 欧美丰满少妇xxxxx高潮对白| 亚洲丝袜美腿综合| 成人久久视频在线观看| 国产欧美日韩一区二区三区在线观看| 美国十次了思思久久精品导航| 欧美高清一级片在线| 午夜视频一区二区三区| 欧美日韩国产综合久久 | 亚洲欧美日韩系列| 国产成人激情av| 国产天堂亚洲国产碰碰| 国产精品资源在线看| 欧美成人国产一区二区| 另类小说综合欧美亚洲| 日韩免费一区二区| 毛片av一区二区| 91精品国产色综合久久| 亚洲一区二区av电影| 91精品办公室少妇高潮对白| 伊人色综合久久天天人手人婷| 91麻豆精品秘密|