Thursday, September 19, 2013

Request for files after an error not sended (multiple files)

Request for files after an error not sended (multiple files)

I tried to find an answer for this issue by myself in the console and
looking at the forum but there isn't.
I use fine-uploader version 3.7 Core. When I upload multiple files and
that one of them results in an error, the files after in the queue have
not even a request sended to the server, even though I see the correct
number of files received in the console.
Is it normal or due to my code ?
The others (files before in the queue) are processed normally. My code is
too big to display it here, so if you need one part in particular, tell
me.
EDIT : here is my fine-uploader code client-side :
(function($){
$.fn.uberuploadcropper = function(options){ // définition d'une méthode
jQuery .uberuploadcropper(imgdata[num]ect option) = comme .html() ou
.css() à appliquer sur l'imgdata[num]et JQ dans lequel on veut mettre le
bouton
// initiation des options
options = $.extend(true, {}, {
postProcessing: false,
postRequest: {},
cazeVide: {
num: [],
uuid: []
}, // numero de la photo et l'uuid de la photo qui y sera affiché
firstEmpty: 0,
objetCazes: { },
fineuploader: { }, // fineuploader options
jcrop: { setSelect: [0,0,100,100] }, // jcrop options
impromptu: {}, // impromptu options
folder: '',
cropAction: '',
onSubmit: function(){},
onProgress: function(){},
onSingleCompleted: function(){},
onComplete: function(){},
erreur: function(){},
afficher: function(){},
move: function(){},
deleteImg: function(){}
},
options);
var $t = $(this);
var imgdata = [];
$t.bind('erreur', options.erreur);
$t.bind('avantUpload', options.onSubmit);
$t.bind('inProgress', options.onProgress);
$t.bind('uberSingleUploadComplete',options.onSingleCompleted);
$t.bind('uberAllUploadsComplete', options.onComplete);
$t.bind('afficher', options.afficher);
$t.bind('move', options.move);
$t.bind('delete', options.deleteImg);
$t.fineUploader(options.fineuploader)
.on('error', function(event, id, filename, reason){
var position = $.inArray(id, options.cazeVide.uuid);
var numero = options.cazeVide.num[position];
var iterationNbr = imgdata.length - numero;
for (var i = 0; i < iterationNbr; i++) {
if(typeof(imgdata[(numero+1+i)]) !== 'undefined') {
imgdata[(numero+i)] = imgdata[(numero+1+i)];
if(i === iterationNbr-1) { // last iteration
imgdata.splice(imgdata.length-1, 1);
}
}
}
$t.trigger('delete', numero);
$t.trigger('erreur', [id, filename, reason, numero]); // à
faire avant le else qui modifie cazeVide.uuid
if($t.fineUploader('getInProgress') === 0) {
$t.trigger('uberAllUploadsComplete', [options, imgdata]);
options.cazeVide = {
num : [],
uuid: []
};
}
})
.on('submit', function(event, id, name) {
$t.trigger('avantUpload', [id, options]);
$.when(options.postRequest).done(function() {
var position = $.inArray(id, options.cazeVide.uuid);
var numero = options.cazeVide.num[position];
})
.on('progress', function(event, id, name, uploadedbytes,
totalBytes) {
$t.trigger('inProgress', [id, uploadedbytes, totalBytes,
options]);
})
.on('complete', function(event, id, fileName, responseJson){
var position = $.inArray(id, options.cazeVide.uuid);
var numero = options.cazeVide.num[position];
imgdata[numero] = (responseJson);
var qquuid = responseJson.qquuid;
var extension = responseJson.extension;
$t.trigger('uberSingleUploadComplete', [numero, qquuid,
extension, options]);
$t.trigger('afficher', [imgdata, numero]);
if ($t.fineUploader('getInProgress') === 0) {
$t.trigger('uberAllUploadsComplete', [options, imgdata]);
}
});
};
$('#fineuploader').uberuploadcropper({
//---------------------------------------------------
// uploadify options..
//---------------------------------------------------
// before each upload, delete past informations
postProcessing: false,
postRequest: {},
cazeVide : {
num : [],
uuid: []
},
firstEmpty: 0,
objetCazes : $('.caseTd'),
fineuploader: {
debug : true,
uploaderType: 'basic',
button: $('#fineuploader'),
multiple : true,
text: {
defaultResponseError: "Unknown error"
},
messages: {
typeError: "{file} has an invalid extension. Valid extension(s):
{extensions}.",
emptyError: "{file} is empty, please select files again without it.",
sizeError: "{file} is too large, maximum file size is {sizeLimit}.",
noFilesError: "No files to upload",
onLeave: "The files are being uploaded, if you leave now the
upload will be cancelled."
},
maxConnections: 25,
request : {
// only from v3.1
params: {
//http://blog.fineuploader.com/2012/11/include-params-in-request-body-or-query.html
dir_name: $('#folder').attr('value'),
},
// be sure to set the charset UTF-8 meta tag in your HTML.
endpoint: 'upload.php'
},
validation: {
sizeLimit : 6*1048576*(6/6.3),
allowedExtensions: ['jpg','jpeg','png','gif']
},
},
//---------------------------------------------------
//now the cropper options..
//---------------------------------------------------
jcrop: {
// aspectRatio : 1,
allowSelect : true, //can reselect
allowResize : true, //can resize selection
setSelect : [ 0, 0, 200, 200 ], //these are the dimensions of the
crop box x1,y1,x2,y2
minSize : [ 100, 100 ], //if you want to be able to resize, use
these
maxSize : [ 500, 375 ]
},
//---------------------------------------------------
//now the uber options..
//---------------------------------------------------
folder : dossierTemp + $('#folder').attr('value') + '/', // only
used in uber, not passed to server
cropAction : 'crop.php', // server side request to crop image
onSubmit : function(e, id, th){
if(th.cazeVide.num.length === 0 && !(th.postProcessing)){
th.postProcessing = true;
var url = {};
var noImg = [];
url.dir_name = $('#folder').attr('value');
$('.apercu').each(function(index) {
var divApercu = $(this);
if(divApercu.children('.miniature').length === 0) {
noImg.push(index);
}
else {
var image = divApercu.children('.miniature')[0];
var lastSlash = image.src.lastIndexOf("/");
var fileName = image.src.slice(lastSlash+1);
url[index] = (fileName);
}
});
th.postRequest = $.post('searchEmpty.php', url, function(data) {
function compare(x, y) {
return x - y;
}
th.cazeVide.num = $.merge(noImg, data).sort(compare);
if(th.cazeVide.num.length == 0) {
return false;
alert('File limit reached, please delete files uploaded
first');
}
else {
th.cazeVide.uuid = [];
th.cazeVide.uuid[0] = id;
initialiseProgress(id, th);
}
th.postProcessing = false;
}, 'json');
}
else {
$.when(th.postRequest).done(function() {
if(th.cazeVide.uuid.length == th.cazeVide.num.length) {
return false;
alert('File limit reached, please delete files uploaded
first');
}
else {
th.cazeVide.uuid.push(id);
initialiseProgress(id, th);
}
});
}
},
onProgress : function (e, id, uploadedBytes, totalBytes, th) {
var loaded = Math.round((uploadedBytes / totalBytes) * 100);
var pos2 = $.inArray(id, th.cazeVide.uuid);
var spanProgress = $('.progress:eq('+ th.cazeVide.num[pos2] +')');
spanProgress.text(loaded + ' %');
},
onSingleCompleted : function (e, numero, uuid, ext, th) {
$('.uuid:eq('+ numero +')').attr('value', uuid);
$('.ext:eq('+ numero +')').attr('value', ext);
var spanProgress2 = $('.progress:eq('+ numero +')');
spanProgress2.text('');
$('.apercu:eq('+ numero +')').css({
'background-color': '',
});
},
onComplete : function(e, th, img){ // all uploads complete
var j = -1;
$('.caseTd').each(function(index) {
var caseTab = $(this);
if(caseTab.find('.miniature').length === 0 && j !== -1) {
caseTab.on({
dragover: function(event) {
event.stopPropagation();
event.preventDefault();
},
drop: function(event) {
event.stopPropagation();
event.preventDefault();
var indexApercu = j;
var difference = indexApercu - indexDragged;
if(difference !== 0) {
if(difference > 0) { // déplacement vers le bas
drop(event, indexDragged, indexApercu, img);
}
else {
drop(event, indexDragged, indexApercu+1, img);
// destination is the one following the gaps
chosen
}
}
},
});
}
else {
j = index;
}
});
th.cazeVide = {
num : [],
uuid: []
};
},
erreur : function(e, id, filename, reason, numero) {
var spanProgress2 = $('.progress:eq('+ numero +')');
spanProgress2.text('');
$('.apercu:eq('+ numero +')').css({
'background-color': '',
});
alert('Error : ' + reason);
},
afficher : function(e, img, num){
var dernierPoint = img[num].filename.lastIndexOf(".");
var extension = img[num].filename.slice(dernierPoint+1);
var coupe = img[num].filename.substr(0,dernierPoint);
var cheminMin = coupe + '_min.'+ extension;
var $PhotoPrevs = $('.apercu:eq(' + num + ') ');
$PhotoPrevs.children('.miniature').remove();
var image = $('<img class="miniature" src="' + dossierTemp +
$('#folder').attr('value') + '/'+ cheminMin +'" draggable="true" />');
$PhotoPrevs.prepend(image);
// Drag and drop
image.css('cursor', 'move');
var caseTd = $('.caseTd:eq(' + num + ') ');
caseTd.on({
// déclenché tant qu on a pas lâché l élément
dragover: function(event) {
event.stopPropagation();
event.preventDefault();
},
drop: function(event) {
event.stopPropagation();
event.preventDefault();
var indexCase = num;
var difference = indexCase - indexDragged;
if(difference !== 0) {
if(difference > 0) { // déplacement vers le bas
drop(event, indexDragged, indexCase, img); // img is
imgdata
}
else {
drop(event, indexDragged, indexCase+1, img); //
destination is the one following the gaps chosen
}
}
},
});
image.on({
// on commence le drag au moment du clique gauche
dragstart: function(event) {
indexDragged = findIndex($(this).attr('src')); // we store the
number of the file being dragged
},
// on commence a bouger un élément draggable
dragenter: function(event) {
event.preventDefault();
},
// déclenché tant qu on a pas lâché l élément
dragover: function(event) {
event.stopPropagation();
event.preventDefault();
},
// quand un élément est laché dessus
drop: function(event) {
event.stopPropagation();
event.preventDefault();
var indexDestination = findIndex($(this).attr('src'));
if (indexDragged !== indexDestination) {
drop(event, indexDragged, indexDestination, img);
}
},
});
},
move : function(e, num1, num2){
var firstImg = [$('.miniature:eq(' + num1 + ') '), $('.uuid:eq(' +
num1 + ') ').attr('value')];
$('.apercu:eq(' + num1 + ') ').prepend($('.miniature:eq(' + num2 + ')
'));
$('.uuid:eq(' + num1 + ') ').attr('value',
$('.uuid:eq(' + num2 + ')
').attr('value')
);
$('.apercu:eq(' + num2 + ') ').prepend(firstImg[0]);
$('.uuid:eq(' + num2 + ') ').attr('value', firstImg[1]);
},
deleteImg : function(e, num){
var i = num + 0;
$('.apercu:eq('+ num +'), .apercu:gt(' + num + ')
').each(function(index){
var apercu = $(this);
var miniature = apercu.children('.miniature');
if(index === 0){
if(miniature.length !== 0) {
miniature.remove();
}
}
else {
var divBoutons = $('.boutons:eq('+ (num+index) +')');
var leftArrow = divBoutons.children('.left-arrow');
if(leftArrow.length !== 0) {
$('.apercu:eq(' + (num+index-1) + ') ').prepend(miniature);
$('.uuid:eq(' + (num+index-1) + ')').attr('value',
$('.uuid:eq(' + (num+index) + ') ').attr('value')
);
i++;
}
else {
return false;
}
}
});
var caseTab = $('.caseTd:eq(' + i + ') ');
var prevCase = $('.caseTd:eq(' + (i-1) + ') ');
caseTab.find('.uuid').attr('value', '');
caseTab.find('.crop-button, .delete, .left-arrow').remove();
prevCase.find('.right-arrow').remove();
var spanProgress = $('.progress:eq('+ i +')');
spanProgress.text('');
$('.apercu:eq('+ i +')').css({
'background-color': '',
});
}
});
})(jQuery);
Thanks !

No comments:

Post a Comment