загрузка zip-файла с другими данными в сообщение ajax для загрузки django

Я использую JSZIP для архивирования объекта сетки, поступающего из THREEJS, а затем загружаю его в модель django через почтовый запрос ajax. В принципе это немного похоже на: Загрузка zip-файл, использующий POST в Javascript, молча завершает работу, но данные, которые я загружаю, немного более разнообразны, и в настоящее время они не работают

JS

myButton.click(function(){
    var TempMesh = new THREE.Mesh(effect.generateGeometry(),effect.material); // requires THREE.js
    var zip = new JSZip();
    var the_exporter = new THREE.OBJExporter(); // requires THREE.OBJExporter()
    var result = the_exporter.parse(TempMesh);
    zip.file("Blob.obj", result.obj);
    zip.file("Blob.mtl", result.mtl);
    zip.generateAsync({type:"blob"}).then(
        function (blob) {
            var fileObj = new File([blob],"Blob.zip");
            var csrftoken = document.getElementsByName('csrfmiddlewaretoken')[0].value; // a div in my html template storing a temporary csrf token
            var data = new FormData();
            data.append("csrfmiddlewaretoken", csrftoken);
            data.append("the_file", fileObj);
            $.ajax({
                url: "THE_DJANGO_VIEW_URL",
                method: 'POST',
                data: data,
                contentType: false,
                processData: false,
                enctype: 'multipart/form-data',
                success: function (result, status, xhr) {//...},
                error: function (result, status, xhr) {//...}
            });
        }
    );

});

VIEWS.py

def MyView(request,pk):
    if request.method == 'POST':
        for keyVals in request.POST.keys():
            print('{} : {}'.format(keyVals,request.POST[keyVals]))

как только представление получает запрос Post, оно не печатает ключ файла:

csrfmiddlewaretoken: 3QaJCh6VfgB...

Что говорит мне о том, что способ отправки zip-файла неверен. Есть идеи? Эта форма содержит гораздо больше данных, чем просто csrf и zip-файл, и используется для создания новых экземпляров модели django.


person compmonks    schedule 07.08.2018    source источник


Ответы (1)


Только что понял, что отправленные файлы находятся под request.FILES, а не под request.POST. Оставив это для тех, кто сталкивается с подобной проблемой.

person compmonks    schedule 07.08.2018