在我负责维护的平台上,出现了一个奇怪的现象。Plupload,奇怪地重命名文件
在网站上,我们使用plupload添加图像和文件。几天之后,在上传过程中,十几位用户(奥地利,瑞士和德国等)上传文件时,文件被重新命名。
如果我发送“my_image.png”,这样可以节省它用这个名字库或它增加了(1)如果另一个文件下该名称已经存在。目前,它使用 - 1或 - 2 [...](例如:my_image - 1.png)系统地重命名文件。如果在数据库中注册文件名时将此更改考虑在内,则这不成问题,但情况并非如此。
尽管我的同事们的帮助下,研究,对这种情况没有解释。它是超部分的,并且已经在2016年底发生,没有被发现。有没有人遇到过这个问题?
我给你我们我们plupload的代码。
有关其他信息,我们的用户使用Internet Explorer(最新版本),并在我们的身边,没有错误引发,我们试图重现bug是徒劳的。
感谢您的关注
function addUpload(form_,type_,container_,button_,multiple_,ext_,params) {
var extended_parameters = new Array();
type_ = 'file_name_'+type_+'[]';
return addUploadApply(form_,type_,container_,button_,multiple_,ext_,params, extended_parameters);
}
//La principale différence entre addUpload et addUploadV2 est que pour la seconde, le name fourni pour le champ (variable type_ = input_name) n'est pas réécrit par la fonction, il est utilisé tel quel ce qui est bien plus pratique pour le dévelopepment
function addUploadV2(form_id, input_name, container_id, upload_button_id, multiple_, ext_, http_get_params, extended_parameters) {
return addUploadApply(form_id, input_name, container_id, upload_button_id, multiple_, ext_, http_get_params, extended_parameters);
}
//Cette fonction a été redéfinie dans le cadre de MultiALL
//On y ajoute un tableau de parameters afin de gérer d'éventuels paramètres supplémentaires, ce qui est compliqué à faire à l'heure actuelle
//Ca nous servira plus tard
function addUploadApply(form_,type_,container_,button_,multiple_,ext_,params, extended_parameters){ nb_upload_fields++;
var nb_fichiers = 0;
var total_files_size = 0;
var file_upload = '/backoffice/upload.php?'+params;
var uploader = new plupload.Uploader({
multi_selection: false,
form : form_,
runtimes : 'gears,html5,flash,silverlight,browserplus,html4',
browse_button : button_,
container : container_,
//max_file_size : '2mb',
max_queue_size : '62914560', // 60 Mo
url : file_upload,
flash_swf_url : '/plupload/plupload.flash.swf',
silverlight_xap_url : '/plupload/plupload.silverlight.xap',
filters : [
{title : "Files", extensions : ext_}
]
});
uploader.init();
uploader.bind('FilesAdded', function(up, files) {
/*$('#next_btn').hide();*/
if(!multiple_ && nb_fichiers > 0){
$('#'+container_+' .inputlist, #'+container_+' .filelist').html("");
nb_fichiers = 0;
}
$.each(files, function(i, file) {
total_files_size += file.size;
});
if(total_files_size < uploader.settings.max_queue_size){
$.each(files, function(i, file) {
nb_fichiers++;
c_ = '<div class="col-md-4" id="' + file.id + '">' + file.name + ' (' + plupload.formatSize(file.size) + ') <b></b>';
if(multiple_){ $('#'+container_+' .filelist').append(c_); }
else{ $('#'+container_+' .filelist').html(c_); }
});
nb_upload_uploading++;
up.refresh(); // Reposition Flash/Silverlight
uploader.start();
}else{
$.each(files, function(i, file) {
total_files_size -= file.size;
up.removeFile(file);
});
if(!$('#'+container_+' .filelist div').length) $('#'+container_+' .filelist').append('<div></div>');
$('#'+container_+' .filelist div').prepend('<b>ERROR</b> ').css('color', '#ff0000');
alert('Error : 11 The selected file is too big.');
//$('#plupload_error').modal();
}
});
uploader.bind('UploadProgress', function(up, file) {
$('#'+uploader.settings.form+' #' + file.id + " b").html(file.percent + "%");
});
uploader.bind('Error', function(up, err) {
$('#'+container_+' .filelist div').prepend('<b>ERROR</b> ').css('color', '#ff0000');
alert('Error : '+obj.error.code+' '+obj.error.message);
/*$('#'+uploader.settings.form+' #filelist').append("<div>Error: " + err.code +
", Message: " + err.message +
(err.file ? ", File: " + err.file.name : "") +
"</div>"
);*/
up.refresh(); // Reposition Flash/Silverlight
});
uploader.bind('FileUploaded', function(up, file, info) {
$('#'+container_+' .inputlist ' + file.id + " b").html("100%");
var obj = JSON.parse(info.response);
// Détection d'une erreur dans le PHP
if (obj.error !== undef) {
$('#'+container_+' .filelist div').prepend('<b>ERROR</b> ').css('color', '#ff0000');
alert('Error : '+obj.error.code+' '+obj.error.message);
return false;
}
var c_ = '<input type="hidden" name="'+type_+'" value="' + obj.result.cleanFileName + '" class="uploadedFile ' + file.id + '" />';
if(multiple_){ $('#'+container_+' .inputlist').append(c_); }
else{
//$('#'+container_+' .inputlist').html("");
if ($('#'+container_+' .inputlist .uploadedFile').length && $('#'+container_+' .inputlist .uploadedFile').attr('name') != '') $('#'+container_+' .inputlist .uploadedFile').val(obj.result.cleanFileName);
else $('#'+container_+' .inputlist').html(c_);
}
if ($('#'+container_+' .fileRemoveButton').length) $('#'+container_+' .fileRemoveButton').show();
});
uploader.bind('UploadComplete', function(up, file) {
nb_upload_completed++;
if(check_upload()){ $('#next_btn').show(); }
});
}
你能向我们展示服务器后端的上传逻辑吗?像'/ backoffice/upload.php'文件一样? (或者如果可能的话,仅限相关部分) – Wndrr