Вход

Просмотр полной версии : Не могу получить файлы [NodeJS&AJAX]


blacklool
06.03.2015, 01:58
Здравствуйте, не могу понять почему файлы не приходят, есть код скрипта (полный, т.к. без формы):

function dropZone(){
//drop zone
var dropZone = $('#dropZone'),
maxFileSize = 1000000000000000000000; // max size -

if (typeof(window.FileReader) == 'undefined') {
dropZone.text('Use recent browser to upload files');
dropZone.addClass('error');
}


//events
dropZone[0].ondragover = function() {
dropZone.addClass('hover');
return false;
};

dropZone[0].ondragleave = function() {
dropZone.removeClass('hover');
return false;
};


//class hack
dropZone[0].ondrop = function(event) {
event.preventDefault();
dropZone.removeClass('hover');
dropZone.addClass('drop');

//size
var file = event.dataTransfer.files[0];

if (file.size > maxFileSize) {
dropZone.text('Big file!');
dropZone.addClass('error');
return false;
}

//ajax


$.ajax({
type: 'post',
url: 'upload',
data: file,
success: function () {
alert('success!');
},
xhrFields: {
// add listener to XMLHTTPRequest object directly for progress
onprogress: uploadProgress
},
processData: false,
contentType: file.type
});

//progress

function uploadProgress(event) {
var percent = parseInt(event.loaded / event.total * 100);
dropZone.text('Donloading: ' + percent + '%');
}

//check result

function stateChange(event) {
if (event.target.readyState == 4) {
if (event.target.status == 200) {
dropZone.text('Downloaded successfuly!');
} else {
dropZone.text('Error!');
dropZone.addClass('error');
}
}
}
};
}

Я использую middleware 'connect-multiparty', и с формой multipart уже работало, но так, при drag&drop не хочет, я в этих делах еще много практики не имею, поэтому, кто нибуть может обьсяснить почему при :

console.log(req.files);

Я получаю пустой массив? ( {} )

Нужно что-то поменять в скрипте? или middleware? или нужно вставлять невидимую форму для отправки? :help:

Спасибо!

blacklool
09.03.2015, 22:47
ответ: нужно использовать formData


var data = new FormData();
$.each(files, function(key, value){
data.append(key, value);
});