Я тестирую API с помощью fiddler, используя следующий заголовок и тело, и POSTing в http://localhost:50063/api/image
:
User-Agent: Fiddler
Content-Type: application/json; charset=utf-8
Host: localhost:50063
Content-Length: 32330
{"filename": "bot.png", "file": "base64 image ellided for brevity"}
Пример кода из руководства
[ApiController]
[Produces("application/json")]
[Route("api/Image")]
public class ImageController : Controller
{
// POST: api/image
[HttpPost]
public void Post(byte[] file, string filename)
{
string filePath = Path.Combine(_env.ContentRootPath, "wwwroot/images/upload", filename);
if (System.IO.File.Exists(filePath)) return;
System.IO.File.WriteAllBytes(filePath, file);
}
//...
}
Сначала я получил ошибку 500 с пустым именем файла.Я добавил [ApiController]
Атрибут к классу контроллера и получаю ошибку 400 имя файла недействительно .
Когда я делаю такой же запрос, filename
связывается со сложным классом:
[HttpPost("Profile")]
public void SaveProfile(ProfileViewModel model)
{
string filePath = Path.Combine(_env.ContentRootPath, "wwwroot/images/upload", model.FileName);
if (System.IO.File.Exists(model.FileName)) return;
System.IO.File.WriteAllBytes(filePath, model.File);
}
public class ProfileViewModel
{
public byte[] File { get; set; }
public string FileName { get; set; }
}
Почему это происходит?