У меня проблема с отправкой аудиофайла в мой API.
Передняя панель:
import requests
url = "https://f16de73c.ngrok.io/api/audio"
files = {'command': open(r'C:\Users\rickk\Desktop\agenda.wav', 'rb')}
headers = {
'content-type': 'multipart/form-data'
}
r = requests.post(url, files=files, headers=headers)
print(r)
print(r.text)
Когда я отправляю вызов API на свой бэкэнд без заголовка, бэкэнд получит файл, но вернет 400, потому что у него нет типа контента. Когда я добавляю заголовок, я получу код состояния 500 назад
'content-type': 'audio / wav' также возвращает мне код состояния 500
Backend:
[Produces("application/json")]
[Route("api/audio")]
[HttpPost]
public async Task<IActionResult> ProcessCommandAsync([FromForm]IFormFile command)
{
if(command.ContentType != "audio/wav" && command.ContentType != "audio/wave" || command.Length < 1)
{
return BadRequest();
}
var text = await CovnvertSpeechToTextApiCall(ConvertToByteArrayContent(command));
return Ok(FormulateResponse(text));
}
Когда я отправляю запрос с Почтальоном / Бессонницей без заголовков, нет проблем, поэтому я создал код с почтальоном. Бэкэнд принимает его и видит тип контента как аудио / wav, но файл явно пуст.
import requests
url = "http://localhost:57566/api/audio"
payload = "------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"command\"; filename=\"agenda.wav\"\r\nContent-Type: audio/x-wav\r\n\r\n\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW--"
headers = {
'content-type': "multipart/form-data; boundary=----WebKitFormBoundary7MA4YWxkTrZu0gW"
}
response = requests.request("POST", url, data=payload, headers=headers)
print(response.text)
Кто-нибудь знает / есть какие-либо предложения относительно того, как отправить аудиофайл на сервер с правильным типом контента?