<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      .NET Core WebAPI 基礎 文件上傳

        昨天分享了一個在WebApi中如何接收參數的文章 傳送門,然后有新人小伙伴就問了,那文件上傳呢,這個怎么弄,借此我寫了一個小demo,分享給大家。

        通常來說,上傳文件,我們是使用POST,還是老規矩先上代碼:

      txt文件

      這是需要上傳的txt文件。

      指定文件參數名

      代碼

      [HttpPost("UploaFile")]
      public async Task<Dictionary<string, string>> UploadFileAsync(IEnumerable<IFormFile> files)
      {
          var fileStream = files.FirstOrDefault()?.OpenReadStream();
          var fileContent = new StringBuilder();
          if (fileStream != null)
          {
              using var reader = new StreamReader(fileStream!);
              while (reader.Peek() >= 0)
              {
                  fileContent.AppendLine(await reader.ReadLineAsync());
              }
          }
      
          var result = new Dictionary<string, string>()
          {
              ["fileContent"] = fileContent.ToString()
          };
      
          return result;
      }

      調用示例

        這里有一個需要注意的地方,就是上傳文件的參數名,需要跟接口的入參名一致,也就是 files,我們使用的類型為 IEnumerable<IFormFile>,主要是 IFormFile 這個,因為我們上傳的文件可能不止一個,所以這里使用了集合,要是不喜歡 IEnumerable,換成 List 也是可以的;

      不指定文件參數名

        而在實際開發中,我們可能會碰到前端不配合,或者參數名改來改去,我們后端又不想頻繁更改,那怎么辦呢,此時我們可以使用以下的方法,不過我個人不太建議,還是好好溝通的好,不然別人看到你的接口文檔,例如swagger,都不知道你這個接口是上傳文件的。

      代碼

      [HttpPost("UploaFile2")]
      public async Task<Dictionary<string, string>> UploadFile2Async()
      {            
          var fileStream = HttpContext.Request.Form.Files.FirstOrDefault()?.OpenReadStream();
          var fileContent = new StringBuilder();
          if (fileStream != null)
          {
              using var reader = new StreamReader(fileStream!);
              while (reader.Peek() >= 0)
              {
                  fileContent.AppendLine(await reader.ReadLineAsync());
              }
          }
      
          var result = new Dictionary<string, string>()
          {
              ["fileContent"] = fileContent.ToString()
          };
      
          return result;
      }

      示例

         可以看到,結果是一樣的。

      混合

        而同樣是一個POST請求,自然是可以通過url,route,from這些傳參啦!

      代碼

      [HttpPost("{method}/{value}/UploaFile")]
      public async Task<Dictionary<string, object>> UploadFileAsync(
          [FromRoute] Parameter route,
          [FromQuery] Parameter query,
          [FromForm] Parameter form,
          IEnumerable<IFormFile> files)
      {
          var fileStream = files.FirstOrDefault()?.OpenReadStream();
          var fileContent = new StringBuilder();
          if (fileStream != null)
          {
              using var reader = new StreamReader(fileStream!);
              while (reader.Peek() >= 0)
              {
                  fileContent.AppendLine(await reader.ReadLineAsync());
              }
          }
      
          var result = new Dictionary<string, object>()
          {
              ["route"] = route,
              ["query"] = query,
              ["form"] = form,
              ["fileContent"] = fileContent.ToString()
          };
      
          return result;
      }

      示例

       關于文件上傳,在微軟的官網中也有對應的文檔,感興趣的小伙伴可以去看看,傳送門,感謝各位的閱讀,有任何問題歡迎評論區留言!

      posted @ 2023-08-30 00:00  一事冇誠  閱讀(3101)  評論(8)    收藏  舉報
      主站蜘蛛池模板: 亚洲欧美中文日韩V日本| 国产成人无码免费视频麻豆| 国产欧美精品一区二区三区-老狼| 国产情侣激情在线对白| 久久er热在这里只有精品66| 精品亚洲无人区一区二区| 国产成人毛片无码视频软件 | 国产中文字幕一区二区| 阿克苏市| 日本亚洲一区二区精品久久| 亚洲AV福利天堂在线观看| 久久成人国产精品免费软件| 亚洲熟女一区二区av| 亚洲伊人久久综合影院| 国产色无码精品视频免费| 77se77亚洲欧美在线| 国产97人人超碰CAO蜜芽PROM| 金寨县| 日韩精品无码一区二区三区视频| 99在线精品国自产拍中文字幕| 无码国产偷倩在线播放| 成人国产精品日本在线观看| 日韩中文免费一区二区| 日本一区不卡高清更新二区| 国产精品成人一区二区三| 国产黄色免费看| 欧美老熟妇乱子伦牲交视频| 中文字幕日韩精品国产| 汉川市| 日本亚洲色大成网站www久久| 无码人妻一区二区三区在线视频 | 久久99精品国产麻豆宅宅| 好男人官网资源在线观看| 久久99精品国产麻豆婷婷| 蜜桃成熟色综合久久av| 国产情侣激情在线对白| 熟妇激情一区二区三区| 亚洲天堂网中文在线资源| 久久不卡精品| 国产精品久久久久久福利| 婷婷四房播播|