Использование загрузки файла формы и скрытых входов - PullRequest
0 голосов
/ 04 марта 2019

Я использую форму для загрузки изображений и хочу добавить скрытый ввод из тела, но я получаю сообщение об ошибке при добавлении этого ввода:

Как я могу разрешить оба типа?Скрытые входы и загрузка файла?

Ошибка

{"Message":"The request entity's media type 'multipart/form-data' is not supported for this resource.","ExceptionMessage":"No MediaTypeFormatter is available to read an object of type 'Int32' from content with media type 'multipart/form-data'.","ExceptionType":"System.Net.Http.UnsupportedMediaTypeException","StackTrace":"   at System.Net.Http.HttpContentExtensions.ReadAsAsync[T](HttpContent content, Type type, IEnumerable`1 formatters, IFormatterLogger formatterLogger, CancellationToken cancellationToken)\r\n   at System.Web.Http.ModelBinding.FormatterParameterBinding.ReadContentAsync(HttpRequestMessage request, Type type, IEnumerable`1 formatters, IFormatterLogger formatterLogger, CancellationToken cancellationToken)"}

Форма

<form method="post" enctype="multipart/form-data" data-bind="fileupload: { url: $parent.EditorImageUploadUrl }" class="form-horizontal">
    <div class="upload-image">
        <div class="button">
            <span class="btn btn-success fileinput-button">
                <input type="file" id="file" class="hidden" />
                <label for="file">Add editor photo</label>
            </span>
        </div>
        <div class="progress" style="width: 30%; float: left; margin: 10px 0 0; display:none;">
            <div class="bar" style="width: 0%;"></div>
        </div>
        <div class="info" style="width:30%; float:left; margin: 10px 0 0; display:none;"></div>
    </div>
    <input type="hidden" name="editorRef" data-bind="value: AuthorRef" />
</form>

Вызов API

    [Route("topics/{topicId}/uploadEditorImage/{authorRef}")]
    [HttpPost]
    public async Task<HttpResponseMessage> UpdateEditorImage(Guid topicId, [FromBody]int editorRef)
    {
        HttpResponseMessage response = Request.CreateResponse(HttpStatusCode.UnsupportedMediaType);

        if (topicId != null)
        {
            if (Request.Content.IsMimeMultipartContent())
            {
                var provider = new MultipartMemoryStreamProvider();
                await Request.Content.ReadAsMultipartAsync(provider);

                var file = provider.Contents.First();
                var data = await file.ReadAsByteArrayAsync();

                await topicService.UploadEditorImage(topicId, authorRef, data);
                return Request.CreateResponse(HttpStatusCode.OK);
            }
        }
        else
        {
            response = Request.CreateResponse(HttpStatusCode.BadRequest, "The topic does not exist");
        }
        return response;

    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...