Django загрузка не начинается, хотя HTTP-ответ равен 200 - PullRequest
0 голосов
/ 08 февраля 2020

Я пытаюсь создать zip-файл, полный WAV-файлов, и загрузить его из внешнего интерфейса React, который делает запрос AJAX к конечной точке Django.

Вот что я до сих пор:

def saveZipFile(request):

if request.method == 'POST':

    in_memory = BytesIO()
    zipFile = ZipFile(in_memory, "a")


    keys = generate_piano_keys(3)
    # activeNotes = {}
    for index, key in enumerate(keys):
        nameOfFile = request.POST.get(key) 
        if(nameOfFile != None):
            zipFile.write('./{}'.format(nameOfFile), arcname="{}.wav".format(key))

    for file in zipFile.filelist:
        file.create_system = 0

    zipFile.close()
    downloadFile = in_memory.getvalue()
    in_memory.seek(0)

    response = HttpResponse(in_memory.getvalue(), content_type='application/zip') 
    response["Content-Disposition"] = 'attachment; filename="sample_map.zip"'
    return response

Я получаю следующий ответ от сервера Django: "POST /test/saveZipFile HTTP/1.1" 200 61894

Я попытался отладить response.content, и это те же байты, что и байты, которые я записываю в переменную zipFile, это означает, что она записывается в ответ. Я попытался использовать application/force-download вместо application/zip в content_type.

Есть ли что-то, чего мне не хватает, поскольку в каждой ветке и статье написано, что это должно выглядеть так.

Запрос выполняется через ax ios:

const res = await axios({
    method: "POST",
    url: window.location.href + "saveZipFile",
    data: data,
    processData: false,
    contentType: false,
    headers: {
      "X-CSRFToken": token
    }
  });

объект данных - это просто набор имен файлов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...