接收multipart form-data时,json参数为空。

31 浏览
0 Comments

接收multipart form-data时,json参数为空。

我正在尝试接收来自Postman的多部分请求,其中包含3个参数:

  • 一个int
  • 一个file
  • 一个Json

我在控制器中收到了fileinteger,但是json中的所有字段都为null。可能出了什么问题?

Json

    [Serializable]
    public class ProcessingRecipe
    {
        [JsonPropertyName("fileId")]
        public string FileID { get; set; }
        [JsonPropertyName("srcLang")]
        public string SrcLang { get; set; }
    }

控制器

    [HttpPost]
    [Route(Routes.Routes.File.PROCESS)]
    public async Task<ActionResult> ProcessFileAsync([FromForm]IFormFile uploadFile,[FromForm] ProcessingRecipe recipe,[FromForm]int aa)
    {
             //the file is ok
            // the int is 33
    }

Postman

\"enter

更新 !!!!!

我已经按照这篇文章的方法,但没有效果:

自定义绑定器

public class JsonModelBinder : IModelBinder {
    public Task BindModelAsync(ModelBindingContext bindingContext) {
        if (bindingContext == null) {
            throw new ArgumentNullException(nameof(bindingContext));
        }
        // Check the value sent in
        var valueProviderResult = bindingContext.ValueProvider.GetValue(bindingContext.ModelName);
        if (valueProviderResult != ValueProviderResult.None) {
            bindingContext.ModelState.SetModelValue(bindingContext.ModelName, valueProviderResult);
            // Attempt to convert the input value
            var valueAsString = valueProviderResult.FirstValue;
            var result = Newtonsoft.Json.JsonConvert.DeserializeObject(valueAsString, bindingContext.ModelType);
            if (result != null) {
                bindingContext.Result = ModelBindingResult.Success(result);
                return Task.CompletedTask;
            }
        }
        return Task.CompletedTask;
    }
}

控制器操作

public async Task<ActionResult> ProcessFileAsync([FromForm]IFormFile uploadFile,[ModelBinder(typeof(JsonModelBinder))] ProcessingRecipe recipe)
        {
                 //the file is ok
                // the int is 33
        }

admin 更改状态以发布 2023年5月21日
0
0 Comments

\n\n这是一个明显的重复,与“如何在Postman中上传文件和json数据”(https://stackoverflow.com/questions/39037049/how-to-upload-a-file-and-json-data-in-postman)相同。\n\n在你的情况下,也许你可以尝试下面的建议(https://stackoverflow.com/a/52748531/11226302)。

0