Как мне перевести команду CURL в Javascript, используя XMLHttpReques с Focus на загрузку файла? - PullRequest
0 голосов
/ 13 марта 2020

Я пытаюсь загрузить файл из клиента на основе 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) 

Заранее благодарим за некоторые предложения.

...