Я пытаюсь загрузить файл из клиента на основе QML, используя XMLHttpRequest
, на веб-сервер fastAPI (python). Команда curl для загрузки файла выглядит следующим образом:
curl -X POST "http://localhost:8000/uploadfile/" -H "accept: application/json" -H "Content-Type: multipart/form-data" -F "file=@myfilename.xml"
Метод post в fastAPI выглядит следующим образом:
@app.post("/uploadfile/")
async def create_upload_file(file: UploadFile = File(...)):
do_something_with_the_file(file)
return {"filename": file.filename}
В файле QML я использую компонент FileDialog выбрать файл и получить имя файла. В части javascript, где я использую функцию XMLHttpRequest()
, я не знаю, как перевести команду curl в правильные параметры XMLHttpRequest()
. В основном информация команды curl с той частью, которая указывает файл "file=@myfilename.xml"
, не будет работать, как показано ниже. Я думаю, это должно быть передано по-другому. К сожалению, в QML мы не можем FormData()
, потому что он недоступен.
var BASE = 'http://localhost:8000/uploadfile/'
var xhr = new XMLHttpRequest();
var params = 'file=@myfilename.xyz;
xhr.open('POST', BASE, false);
xhr.setRequestHeader('Content-Type', 'multipart/form-data');
xhr.setRequestHeader('Accept', 'application/json');
xhr.send(params)
Заранее благодарим за некоторые предложения.