欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

.net core webapi 大文件上傳到wwwroot文件夾的操作代碼

 更新時(shí)間:2023年12月25日 14:40:56   作者:彭小彭~  
這篇文章主要介紹了.net core webapi 大文件上傳到wwwroot文件夾的操作代碼,本文通過示例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友參考下吧

1.配置staticfiles(program文件中)

 app.UseStaticFiles();

2.在wwwroot下創(chuàng)建upload文件夾
3.返回結(jié)果封裝

namespace webapi;
/// <summary>
/// 統(tǒng)一數(shù)據(jù)響應(yīng)格式
/// </summary>
public class Results<T>
{
    /// <summary>
    /// 自定義的響應(yīng)碼,可以和http響應(yīng)碼一致,也可以不一致
    /// </summary>
    public int Code { get; set; }
    /// <summary>
    /// 中文消息提示
    /// </summary>
    public string? Msg { get; set; }
    /// <summary>
    /// 是否成功
    /// </summary>
    public bool Success { get; set; }
    /// <summary>
    /// 響應(yīng)的數(shù)據(jù)
    /// </summary>
    public T? Data { get; set; }
    /// <summary>
    /// 返回的Token: 如果有值,則前端需要此這個(gè)值替舊的token值
    /// </summary>
    public string? Token { get; set; }
    /// <summary>
    /// 設(shè)置數(shù)據(jù)的結(jié)果
    /// </summary>
    /// <param name="data">數(shù)據(jù)</param>
    /// <returns></returns>
    public static Results<T> DataResult(T data)
    {
        return new Results<T> { Code = 1, Data = data, Msg = "請求成功", Success = true };
    }
    /// <summary>
    /// 響應(yīng)成功的結(jié)果
    /// </summary>
    /// <param name="msg"></param>
    /// <returns></returns>
    public static Results<T> SuccessResult(string msg = "操作成功")
    {
        return new Results<T> { Code = 1, Data = default, Msg = msg, Success = true };
    }
    /// <summary>
    /// 響應(yīng)失敗的結(jié)果
    /// </summary>
    /// <param name="msg"></param>
    /// <returns></returns>
    public static Results<T> FailResult(string msg = "請求失敗")
    {
        return new Results<T> { Code = -1, Data = default, Msg = msg, Success = false };
    }
    /// <summary>
    /// 參數(shù)有誤
    /// </summary>
    /// <param name="msg"></param>
    /// <returns></returns>
    public static Results<T> InValidParameter(string msg = "參數(shù)有誤")
    {
        return new Results<T> { Code = -1, Data = default, Msg = msg, Success = false };
    }
    /// <summary>
    /// 獲取結(jié)果
    /// </summary>
    /// <param name="code"></param>
    /// <param name="msg"></param>
    /// <param name="data"></param>
    /// <param name="success"></param>
    /// <returns></returns>
    public static Results<T> GetResult(int code = 0, string? msg = null, T? data = default, bool success = true)
    {
        return new Results<T> { Code = code, Data = data, Msg = msg, Success = success };
    }
    /// <summary>
    /// 設(shè)置token結(jié)果
    /// </summary>
    /// <param name="token"></param>
    /// <returns></returns>
    public static Results<T> TokenResult(string token)
    {
        return new Results<T> { Code = 1, Data = default, Msg = "請求成功", Success = true, Token = token };
    }
}

4.創(chuàng)建一個(gè)新的控制器

using Microsoft.AspNetCore.Mvc;
using Microsoft.AspNetCore.WebUtilities;
using Microsoft.Net.Http.Headers;
namespace webapi.Controllers;
/// <summary>
/// 文件上傳
/// </summary>
[ApiController]
[Route("[controller]/[action]")]
public class UploadController : ControllerBase
{
    private readonly IWebHostEnvironment _hostEnvironment;
    /// <summary>
    /// 注入服務(wù)
    /// </summary>
    /// <param name="hostEnvironment"></param>
    public UploadController(IWebHostEnvironment hostEnvironment)
    {
        _hostEnvironment = hostEnvironment;
    }
    /// <summary>
    /// 上傳文件(支持多文件/大文件500M)
    /// </summary>
    /// <returns></returns>
    [HttpPost]
    [RequestFormLimits(MultipartBodyLengthLimit = 609715200)]
    [RequestSizeLimit(609715200)]
    public async Task<Results<List<string>>> UploadFile()
    {
        var request = HttpContext.Request;
        if (!request.HasFormContentType ||
            !MediaTypeHeaderValue.TryParse(request.ContentType, out var mediaTypeHeader) ||
            string.IsNullOrEmpty(mediaTypeHeader.Boundary.Value))
        {
            return Results<List<string>>.FailResult("文件類型不支持");
        }
        var reader = new MultipartReader(mediaTypeHeader.Boundary.Value, request.Body);
        var section = await reader.ReadNextSectionAsync();
        List<string> serverFilePathList = new();
        while (section != null)
        {
            var hasContentDispositionHeader = ContentDispositionHeaderValue.TryParse(section.ContentDisposition,
                out var contentDisposition);
            if (hasContentDispositionHeader && contentDisposition!.DispositionType.Equals("form-data") &&
                !string.IsNullOrEmpty(contentDisposition.FileName.Value))
            {
                // 獲取文件后綴名
                var extension = Path.GetExtension(contentDisposition.FileName.Value);
                // 為文件重命名,防止文件重名
                var fileName = DateTime.Now.ToString("yyyyMMddHHmmssfff") + extension;
                // 文件保存的文件夾路徑
                var uploadPath = Path.Combine(_hostEnvironment.WebRootPath, "upload");
                if (!Directory.Exists(uploadPath))
                {
                    Directory.CreateDirectory(uploadPath);
                }
                var fileFullPath = Path.Combine(uploadPath, fileName);
                try
                {
                    using var targetStream = System.IO.File.Create(fileFullPath);
                    await section.Body.CopyToAsync(targetStream);
                    serverFilePathList.Add("/upload/" + fileName);
                }
                catch (Exception e)
                {
                    Console.WriteLine(e);
                }
            }
            section = await reader.ReadNextSectionAsync();
        }
        return Results<List<string>>.DataResult(serverFilePathList);
    }
}

5.使用postman工具測試

在這里插入圖片描述

6.查看本地上傳文件

在這里插入圖片描述

到此這篇關(guān)于.net core webapi 大文件上傳到wwwroot文件夾的文章就介紹到這了,更多相關(guān).net core webapi 大文件上傳內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 詳解ASP.NET Core WebApi 返回統(tǒng)一格式參數(shù)

    詳解ASP.NET Core WebApi 返回統(tǒng)一格式參數(shù)

    這篇文章主要介紹了詳解ASP.NET Core WebApi 返回統(tǒng)一格式參數(shù),小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2018-11-11
  • 通過HttpClient 調(diào)用ASP.NET Web API示例

    通過HttpClient 調(diào)用ASP.NET Web API示例

    本篇文章主要介紹了通過HttpClient 調(diào)用ASP.NET Web API示例,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2017-03-03
  • 淺談.NET反射機(jī)制的性能優(yōu)化 附實(shí)例下載

    淺談.NET反射機(jī)制的性能優(yōu)化 附實(shí)例下載

    在進(jìn)入解釋型模版引擎的探討之前,我決定先分享一下這篇博客。因?yàn)樵诮忉屝鸵胬飳敕瓷涞母拍顏韺?shí)現(xiàn)更多、更復(fù)雜的功能
    2012-04-04
  • .NET 某券商論壇系統(tǒng)卡死問題分析

    .NET 某券商論壇系統(tǒng)卡死問題分析

    前幾個(gè)月有位朋友找到我,說他們的的web程序沒有響應(yīng)了,而且監(jiān)控發(fā)現(xiàn)線程數(shù)特別高,內(nèi)存也特別大,讓我?guī)兔匆幌略趺椿厥?現(xiàn)在回過頭來幾經(jīng)波折,回味價(jià)值太濃了,本文給大家分享.NET 某券商論壇系統(tǒng)卡死問題分析,感興趣的朋友跟隨小編一起看看吧
    2024-11-11
  • IdentityServer4 QuckStart 授權(quán)與自定義Claims的問題

    IdentityServer4 QuckStart 授權(quán)與自定義Claims的問題

    這篇文章主要介紹了IdentityServer4 QuckStart 授權(quán)與自定義Claims的問題,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-04-04
  • ASP.NET 在下載文件時(shí)對其重命名的思路及實(shí)現(xiàn)方法

    ASP.NET 在下載文件時(shí)對其重命名的思路及實(shí)現(xiàn)方法

    ASP.NET 在下載文件時(shí)對其重命名的思路及實(shí)現(xiàn)方法,需要的朋友可以參考一下
    2013-06-06
  • 點(diǎn)擊提交按鈕后DropDownList的值變?yōu)槟J(rèn)值實(shí)現(xiàn)分析

    點(diǎn)擊提交按鈕后DropDownList的值變?yōu)槟J(rèn)值實(shí)現(xiàn)分析

    在點(diǎn)擊提交按鈕后,頁面上所有的綁定到數(shù)據(jù)庫的控件值都恢復(fù)到默認(rèn)值,下面與大家分享下DropDownList的值變?yōu)槟J(rèn)值
    2013-05-05
  • .net core中Quartz的使用方法

    .net core中Quartz的使用方法

    這篇文章主要介紹了.net core中Quartz的使用方法,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2019-03-03
  • asp.net 8 服務(wù)器爆滿的解決過程

    asp.net 8 服務(wù)器爆滿的解決過程

    如果遇到"服務(wù)器爆滿"的問題,通常是指服務(wù)器無法處理更多的請求,可能是因?yàn)橘Y源限制、并發(fā)連接數(shù)太多或者服務(wù)器配置不當(dāng),檢查服務(wù)器資源:確保服務(wù)器有足夠的CPU、內(nèi)存和帶寬資源來處理請求,調(diào)整Kestrel配置,可以在Program.cs或Startup.cs中配置最大并發(fā)連接數(shù)
    2024-05-05
  • ASP.NET無刷新分頁簡單實(shí)現(xiàn)

    ASP.NET無刷新分頁簡單實(shí)現(xiàn)

    無刷新分頁功能,雖然比較簡單,但是涉及到的知識面蠻多的,我記錄一下制作的步驟與心得,僅供參考。如有哪里不足,希望大家指出,有更好的方法,也可以提出來,大家一起學(xué)習(xí)。
    2015-09-09

最新評論