Asp.net-Mvc

asp.net core web API文件上傳和“form-data”多個參數傳遞給方法

  • January 14, 2020

我創建了一個將文件作為參數的端點:

   [HttpPost("[action]")]
   [Consumes("multipart/form-data")]
   public ActionResult UploadImage(IFormFile  Files, string param)
   {

       long size = Files.Length;            
       var tempPath = Path.GetTempFileName();
       string file_Extension = Path.GetExtension(Files.FileName);                   
       var isValidFile = FileValidation.FileUploadValidation(Files);
       if (isValidFile.data)
       {
           string filename = Guid.NewGuid() + "" + file_Extension;
           return null;

       }
       else
       {
           return null;
       }
   }

我無法毫無問題地檢索文件。如何向同一個方法添加更多文本參數?

調試視圖參數為空

郵遞員打電話

[HttpPost("[action]")]
[Consumes("multipart/form-data")]
public IActionResult UploadImage([FromForm] FileInputModel Files)
{

   return Ok();
}

public class FileInputModel 
{
   public IFormFile File { get; set; }
   public string Param { get; set; }
}

我添加程式碼後需要 [FromForm]在參數模型之前添加才能[FromForm]完美執行。

它可以 100% 工作。經測試。請執行以下步驟:

您應該為模型創建一個自定義類

public class FileInputModel
{
   public string Name { get; set; }
   public IFormFile FileToUpload { get; set; }
}

和像這樣的形式

<form method="post" enctype="multipart/form-data" asp-controller="Home" asp-action="UploadFileViaModel" >
   <input name="Name" class="form-control" />
   <input name="FileToUpload" type="file" class="form-control" />
   <input type="submit" value="Create" class="btn btn-default" />
</form>

和控制器方法如

[HttpPost]
public async Task<IActionResult> UploadFileViaModel([FromForm] FileInputModel model)
{
   if (model == null || model.FileToUpload == null || model.FileToUpload.Length == 0)
       return Content("file not selected");

   var path = Path.Combine(Directory.GetCurrentDirectory(), "wwwroot", model.FileToUpload.FileName);

   using (var stream = new FileStream(path, FileMode.Create))
   {
       await model.FileToUpload.CopyToAsync(stream);
   }

   return RedirectToAction("Files");
}

引用自:https://stackoverflow.com/questions/51892706