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:
Спасибо!
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:
Спасибо!