国产片侵犯亲女视频播放_亚洲精品二区_在线免费国产视频_欧美精品一区二区三区在线_少妇久久久_在线观看av不卡

服務(wù)器之家:專注于服務(wù)器技術(shù)及軟件下載分享
分類導(dǎo)航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術(shù)|正則表達(dá)式|C/C++|IOS|C#|Swift|Android|VB|R語(yǔ)言|JavaScript|易語(yǔ)言|vb.net|

服務(wù)器之家 - 編程語(yǔ)言 - ASP.NET教程 - ASP.NET Core單文件和多文件上傳并保存到服務(wù)端的方法

ASP.NET Core單文件和多文件上傳并保存到服務(wù)端的方法

2020-06-29 14:24追逐時(shí)光 ASP.NET教程

這篇文章主要介紹了ASP.NET Core單文件和多文件上傳并保存到服務(wù)端的方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧

前言:

  在我們?nèi)粘i_發(fā)中,關(guān)于圖片,視頻,音頻,文檔等相關(guān)文件上傳并保存到服務(wù)端中是非常常見(jiàn)的一個(gè)功能,今天主要是把自己在開發(fā)中常用的兩種方式記錄下來(lái)方便一下直接使用,并且希望能夠幫助到有需要的同學(xué)!

一、配置ASP.NET Core中的靜態(tài)文件:

簡(jiǎn)單概述:

  在ASP.NET Core應(yīng)用中靜態(tài)資源文件需要進(jìn)行相應(yīng)的配置才能夠提供給客戶端直接使用。

詳情描述請(qǐng)參考官方文檔:
https://docs.microsoft.com/zh-cn/aspnet/core/fundamentals/static-files?view=aspnetcore-3.1

簡(jiǎn)單配置,提供 Web 根目錄內(nèi)的文件:

調(diào)用 Startup.Configure中的UseStaticFiles 方法配置:

?
1
2
3
4
public void Configure(IApplicationBuilder app)
{
  app.UseStaticFiles();
}

二、文件服務(wù)器和應(yīng)用程序配置(IIS,Kestrel):

詳情描述,請(qǐng)參考官方文檔說(shuō)明:
https://docs.microsoft.com/zh-cn/aspnet/core/mvc/models/file-uploads?view=aspnetcore-3.1#server-and-app-configuration

多部分正文長(zhǎng)度限制:

MultipartBodyLengthLimit 設(shè)置每個(gè)多部分正文的長(zhǎng)度限制。 分析超出此限制的窗體部分時(shí),會(huì)引發(fā) InvalidDataException。 默認(rèn)值為 134,217,728 (128 MB)。 使用 MultipartBodyLengthLimit 中的 Startup.ConfigureServices 設(shè)置自定義此限制:

?
1
2
3
4
5
6
7
8
public void ConfigureServices(IServiceCollection services)
{
  services.Configure<FormOptions>(options =>
  {
    // Set the limit to 256 MB
    options.MultipartBodyLengthLimit = 268435456;
  });
}

Kestrel 最大請(qǐng)求正文大?。?/strong>

對(duì)于 Kestrel 托管的應(yīng)用,默認(rèn)的最大請(qǐng)求正文大小為 30,000,000 個(gè)字節(jié),約為 28.6 MB。 使用 MaxRequestBodySize Kestrel 服務(wù)器選項(xiàng)自定義限制:

?
1
2
3
4
5
6
7
8
9
10
11
public static IHostBuilder CreateHostBuilder(string[] args) =>
  Host.CreateDefaultBuilder(args)
    .ConfigureKestrel((context, options) =>
    {
      // Handle requests up to 50 MB
      options.Limits.MaxRequestBodySize = 52428800;
    })
    .ConfigureWebHostDefaults(webBuilder =>
    {
      webBuilder.UseStartup<Startup>();
    });

IIS 內(nèi)容長(zhǎng)度限制:

默認(rèn)的請(qǐng)求限制 (maxAllowedContentLength) 為 30,000,000 字節(jié),大約 28.6 MB。 請(qǐng)?jiān)?web.config 文件中自定義此限制:

?
1
2
3
4
5
6
7
8
<system.webServer>
 <security>
  <requestFiltering>
   <!-- Handle requests up to 50 MB -->
   <requestLimits maxAllowedContentLength="52428800" />
  </requestFiltering>
 </security>
</system.webServer>

三、單文件上傳:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
using System;
using System.IO;
using Microsoft.AspNetCore.Hosting;
using Microsoft.AspNetCore.Mvc;
 
namespace FileUploadManage.Controllers
{
  /// <summary>
  /// 圖片,視頻,音頻,文檔等相關(guān)文件通用上傳服務(wù)類
  /// </summary>
  public class FileUploadController : Controller
  {
    private static IHostingEnvironment _hostingEnvironment;
 
    public FileUploadController(IHostingEnvironment hostingEnvironment)
    {
      _hostingEnvironment = hostingEnvironment;
    }
 
    /// <summary>
    /// 單文件上傳
    /// </summary>
    /// <returns></returns>
    public JsonResult SingleFileUpload()
    {
      var formFile = Request.Form.Files[0];//獲取請(qǐng)求發(fā)送過(guò)來(lái)的文件
      var currentDate = DateTime.Now;
      var webRootPath = _hostingEnvironment.WebRootPath;//>>>相當(dāng)于HttpContext.Current.Server.MapPath("")
 
      try
      {
        var filePath = $"/UploadFile/{currentDate:yyyyMMdd}/";
 
        //創(chuàng)建每日存儲(chǔ)文件夾
        if (!Directory.Exists(webRootPath + filePath))
        {
          Directory.CreateDirectory(webRootPath + filePath);
        }
 
        if (formFile != null)
        {
          //文件后綴
          var fileExtension = Path.GetExtension(formFile.FileName);//獲取文件格式,拓展名
 
          //判斷文件大小
          var fileSize = formFile.Length;
 
          if (fileSize > 1024 * 1024 * 10) //10M TODO:(1mb=1024X1024b)
          {
            return new JsonResult(new { isSuccess = false, resultMsg = "上傳的文件不能大于10M" });
          }
 
          //保存的文件名稱(以名稱和保存時(shí)間命名)
          var saveName = formFile.FileName.Substring(0, formFile.FileName.LastIndexOf('.'))+"_"+currentDate.ToString("HHmmss")+ fileExtension;
 
          //文件保存
          using (var fs = System.IO.File.Create(webRootPath + filePath + saveName))
          {
            formFile.CopyTo(fs);
            fs.Flush();
          }
 
          //完整的文件路徑
          var completeFilePath = Path.Combine(filePath, saveName);
 
          return new JsonResult(new { isSuccess = true, returnMsg = "上傳成功", completeFilePath = completeFilePath });
        }
        else
        {
          return new JsonResult(new { isSuccess = false, resultMsg = "上傳失敗,未檢測(cè)上傳的文件信息~" });
        }
 
      }
      catch (Exception ex)
      {
        return new JsonResult(new { isSuccess = false, resultMsg = "文件保存失敗,異常信息為:" + ex.Message });
      }
    }
 
  }
}

四、多文件上傳:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
using System;
using System.Collections.Generic;
using System.IO;
using Microsoft.AspNetCore.Hosting;
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Http.Internal;
using Microsoft.AspNetCore.Mvc;
using Microsoft.EntityFrameworkCore.Internal;
 
namespace FileUploadManage.Controllers
{
  /// <summary>
  /// 圖片,視頻,音頻,文檔等相關(guān)文件通用上傳服務(wù)類
  /// </summary>
  public class FileUploadController : Controller
  {
    private static IHostingEnvironment _hostingEnvironment;
 
    public FileUploadController(IHostingEnvironment hostingEnvironment)
    {
      _hostingEnvironment = hostingEnvironment;
    }
 
    /// <summary>
    /// 多文件上傳
    /// </summary>
    /// <param name="formCollection">表單集合值</param>
    /// <returns>服務(wù)器存儲(chǔ)的文件信息</returns>
 
    public JsonResult MultiFileUpload(IFormCollection formCollection)
    {
      var currentDate = DateTime.Now;
      var webRootPath = _hostingEnvironment.WebRootPath;//>>>相當(dāng)于HttpContext.Current.Server.MapPath("")
      var uploadFileRequestList = new List<UploadFileRequest>();
      try
      {
        //FormCollection轉(zhuǎn)化為FormFileCollection
        var files = (FormFileCollection)formCollection.Files;
 
        if (files.Any())
        {
          foreach (var file in files)
          {
            var uploadFileRequest = new UploadFileRequest();
 
            var filePath = $"/UploadFile/{currentDate:yyyyMMdd}/";
 
            //創(chuàng)建每日存儲(chǔ)文件夾
            if (!Directory.Exists(webRootPath + filePath))
            {
              Directory.CreateDirectory(webRootPath + filePath);
            }
 
            //文件后綴
            var fileExtension = Path.GetExtension(file.FileName);//獲取文件格式,拓展名
 
            //判斷文件大小
            var fileSize = file.Length;
 
            if (fileSize > 1024 * 1024 * 10) //10M TODO:(1mb=1024X1024b)
            {
              continue;
            }
 
            //保存的文件名稱(以名稱和保存時(shí)間命名)
            var saveName = file.FileName.Substring(0, file.FileName.LastIndexOf('.')) + "_" + currentDate.ToString("HHmmss") + fileExtension;
 
            //文件保存
            using (var fs = System.IO.File.Create(webRootPath + filePath + saveName))
            {
              file.CopyTo(fs);
              fs.Flush();
            }
 
            //完整的文件路徑
            var completeFilePath = Path.Combine(filePath, saveName);
 
            uploadFileRequestList.Add(new UploadFileRequest()
            {
              FileName = saveName,
              FilePath = completeFilePath
            });
          }
        }
        else
        {
          return new JsonResult(new { isSuccess = false, resultMsg = "上傳失敗,未檢測(cè)上傳的文件信息~" });
        }
      }
      catch (Exception ex)
      {
        return new JsonResult(new { isSuccess = false, resultMsg = "文件保存失敗,異常信息為:" + ex.Message });
      }
 
      if (uploadFileRequestList.Any())
      {
        return new JsonResult(new { isSuccess = true, returnMsg = "上傳成功", filePathArray = uploadFileRequestList });
      }
      else
      {
        return new JsonResult(new { isSuccess = false, resultMsg = "網(wǎng)絡(luò)打瞌睡了,文件保存失敗" });
      }
    }
 
  }
 
  /// <summary>
  /// 對(duì)文件上傳響應(yīng)模型
  /// </summary>
  public class UploadFileRequest
  {
    /// <summary>
    /// 文件名稱
    /// </summary>
    public string FileName { get; set; }
 
    /// <summary>
    /// 文件路徑
    /// </summary>
    public string FilePath { get; set; }
  }
}

到此這篇關(guān)于ASP.NET Core單文件和多文件上傳并保存到服務(wù)端的方法的文章就介紹到這了,更多相關(guān)ASP.NET Core文件上傳內(nèi)容請(qǐng)搜索服務(wù)器之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持服務(wù)器之家!

作者:追逐時(shí)光

作者簡(jiǎn)介:一個(gè)熱愛(ài)編程,善于分享,喜歡學(xué)習(xí)、探索、嘗試新事物,新技術(shù)的程序猿。

原文鏈接:https://www.cnblogs.com/Can-daydayup/p/12637100.html

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 久久se精品一区精品二区 | 亚洲欧美一区二区三区在线 | a天堂国产| 久久久精品国产 | 欧美国产日韩视频 | 国产精品香蕉 | www久久久久 | 91免费在线 | 一区二区日韩精品 | 午夜精品久久 | 久章操| 国产精品一二三在线观看 | av影音资源 | 91视频进入| 国产精品美女久久久免费 | 国外爱爱视频 | 欧美视频一区二区 | 精品国产91亚洲一区二区三区www | 久久伊99综合婷婷久久伊 | 亚洲高清一区二区三区 | 亚洲国产aⅴ成人精品无吗 黄色免费在线看 | 久久综合九色综合欧美狠狠 | 欧美国产在线观看 | 激情久久婷婷 | 狠狠操综合网 | 中文字幕一区二区三区日韩精品 | 成人精品鲁一区一区二区 | 亚洲高清在线视频 | 久久精品一 | 国产欧美久久久久久 | 中文久久 | 日本狠狠干 | 久久精品亚洲精品 | 国产精品久久久久久亚洲调教 | 亚洲香蕉视频 | 懂色av一区二区三区免费观看 | 亚洲精品免费在线 | 亚洲精品综合 | 国产成人精品一区二区三区四区 | a在线观看 | 欧美一区二区三区精品 |