Я использую 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.