Я пытаюсь получить WAV-файл в ответ на запрос POST.Я использую send_file
во Flask.Я пытаюсь получить файл на стороне клиента в ответе.В конечном итоге я преобразовал его в большой двоичный объект, чтобы его можно было автоматически загрузить.
Это код API для сервера:
@app.route('/drums', methods = ['GET', 'POST'])
@cross_origin()
def upload_drums():
if request.method == 'POST':
f = request.files['file']
f.save(secure_filename(f.filename))
test_run()
return send_file('C:/Users/Titus/Separation/results/dsd/music.wav', mimetype="audio/wav")
Это клиентский скрипт для запроса на публикацию:
getDrum(event: any) {
event.preventDefault();
let file = this.state.file;
const formData = new FormData();
const blob = file as Blob;
formData.append("file", blob);
axios
.post("http://localhost:5000/drums", formData)
.then((res: any) => {
console.log(res);
const url = window.URL.createObjectURL(new Blob(res.data, { 'type' : 'audio/wav' }));
const link = document.createElement('a');
link.href = url;
link.setAttribute('download', 'foo.wav'); //or any other extension
document.body.appendChild(link);
link.click();
})
.catch((err: any) => console.warn(err));
}
Я получаю ошибку "provided value cannot be converted to a sequence"
при попытке преобразовать res.data
в WAV-объект.Файл успешно получен, и верный файл отправлен обратно.
Создание большого двоичного объекта с [res.data]
вместо res.data
фактически загружает файл, но файл не может быть воспроизведен (он поврежден).Я подозреваю, что данные из ответа должны быть в двоичном формате.