Как сохранить в view django - файл, отправленный fetch запросом?
вопрос наиглупейший, но ответ не получилось найти правильный. Есть input поле и, при клике на него (добавлении файла) отправляется fetch запрос на сервер джанго. проблема в том, что не получается получить этот сам файл никак (ну или извлечь его и сохранить). html -
<div class="m-5" id="form_4" enctype="multipart/form-data">
<label for="formFile_4" class="form-label">Можно загрузить файлы только с <strong>xlsx</strong> форматом</label>
<div class="input-group">
<input class="form-control" type="file" id="formFile_4" name="xlsxfile">
<button type="button" onclick="sendData(this);" class="btn btn-outline-primary" id="4" data-bs-dismiss="modal" name="xlsxfile"> Отправить </button>
</div>
</div>
Код fetch запроса
function sendData(data) {
var id_val = data.id;
var inputdata = document.getElementById("formFile_" + id_val.toString());
const csrftoken = document.querySelector('[name=csrfmiddlewaretoken]').value;
var formData = new FormData();
formData.append("xlsxfile", inputdata)
fetch("http://127.0.0.1:8000/home/uploadxlsx", {
method: "POST",
headers: {'X-CSRFToken': csrftoken},
body: JSON.stringify(formData),
})
.then( response => {
console.log(response)
});
}
Когда просто через form делала с отправкой submit, выглядела вьюшка так
def uploadxlsx_view(request):
if request.method == 'POST':
request_file = request.FILES['xlsxfile'] if 'xlsxfile' in request.FILES else None
if request_file:
file_format = request_file.name.split(".")[-1]
if file_format == "xlsx":
file = request.FILES['xlsxfile']
fs = FileSystemStorage(location=MEDIA_ROOT)
filename = f"{uuid.uuid4()}.xlsx"
file = fs.save(filename, file)
*** и тд и тп ****
Для fetch пыталась сделать так, но как-то бесполезно
def uploadxlsx_view(request):
if request.method == "POST":
received_json = request.body.decode('utf-8')
file = json.loads(received_json)
*** и тд и тп ***
Только не бейте), кучу сайтов просмотрела, но ничего особо и не помогло (большинство примеров на ajax). Спасибо заранее.