유지 관리를 담당하는 플랫폼에서 이상한 현상이 나타납니다.파일을 Plupload, 이상하게 이름을 변경합니다.
사이트에서 plupload를 사용하여 이미지와 파일을 추가합니다. 며칠 후, 오스트리아, 스위스, 독일 등에서 12 명의 사용자가 업로드하는 동안 파일의 이름이 변경되었습니다.
"my_image.png"를 보내면 저장소에이 이름으로 저장되거나이 이름으로 다른 파일이 이미 있으면 (1)을 추가합니다. 현재, 그것은 체계적으로 파일의 이름을 --1 또는 --2 [...]로 바꿉니다 (예 : my_image - 1.png). 데이터베이스에 파일 이름을 등록 할 때이 변경 사항을 고려해도 문제가되지는 않습니다.
동료 및 연구원의 도움에도 불구하고이 상황에 대한 설명이 없습니다. 그것은 매우 부분적이며 이미 발견되지 않고 2016 년 말에 이미 발생했습니다. 누구도이 문제를 겪은 적이 있습니까?
나는 우리에게 plupload의 코드를 제공합니다.
자세한 내용은 사용자가 Internet Explorer (최신 버전)를 사용하고 우리 측에서는 버그가 발생하지 않았으므로 버그를 재현하려는 시도는 헛된 것입니다. 관심
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