Как сторона веб-Api получает загруженный файл и некоторые параметры multipart / form-data?

#c# #upload #multipartform-data #asp.net-core-webapi

#c# #загрузка #multipartform-data #asp.net-core-webapi

Вопрос:

Мне нужно загрузить файл (изображение) и четыре других параметра строкового типа одним HTTP-запросом на мой asp.net основное приложение веб-api, а тип содержимого — multipart / form-data. Я могу получить один единственный лист (изображение) и сохранить его, но после того, как я добавил четыре строковых параметра, я не знаю, как их получать и обрабатывать.

Я попытался добавить атрибут [FromBody] к своим параметрам, но он все еще не работает.

Вот некоторые из моего кода:

 [Route("addbook")]
public ActionResult AddBook([FromBody] string ownerid,string bookName,string bookAuthor,string bookIntro) 
{
IFormFile file = Request.Form.Files["bookcover"];
// process the file...

// the following code can't work!!!!
Book newBook = new Book {
                BookID = Guid.NewGuid().ToString("N"),
                Name = bookName,
                Author = bookAuthor,
                OwnerID = ownerid,
                Introduce = bookIntro,
                UploadTime = DateTime.Now,
                BookCover = filename
            };
//save them to database...
}
  

Я хочу сохранить файл, прочитать строку и сохранить их в базе данных.

Спасибо за помощь. Фрэнк.

Комментарии:

1. Пожалуйста, предоставьте свой код javascript

2. Вот некоторые из моего js-кода, они из WeChat miniapp: wx.uploadFile({ url: app.GlobalData.bookUrl ‘addbook’, заголовок: { ‘content-type’: ‘multipart / form-data’ }, Путь к файлу: this.data.bookCoverPath, имя: ‘bookcover’, FormData:{ BookName: ‘test’, Автор книги: ‘test’, идентификатор владельца: app.GlobalData.OpenID, bookIntro: ‘test’ }, успех (res) {//…} })

3. Кажется, что я могу получить файл и другие параметры, когда я не использую прокси nginx, но когда я использовал прокси nginx, я бы потерпел неудачу, код состояния ответа — 502 bad gateway или 400 bad request. Я могу делать другие вещи с помощью прокси-сервера nginx, кроме загрузки flie. Я не знаю почему. Мне не хватает какой-либо конфигурации с nginx?