Мне нужно найти ошибку моего кода, чтобы продолжить загрузку файлов на мой сервер, отправка AJAX такова:
//Formulario Crear Imagen Objeto _ Envio Ajax
$(function(){
$("#formulario_CrearImagenObjeto").on("submit", function(e){
e.preventDefault();
var f = $(this);
var formData = new FormData(document.getElementById("formulario_CrearImagenObjeto"));
$.ajax({
url: "./ajaxpaginaobjeto/Formulario_CrearImagenObjeto.php",
type: "post",
dataType: "html",
data: formData,
cache: false,
contentType : false,
processData: false,
success: function (data) {
$('#CrearObjeto_Respuesta2').html(data);
}
});
});
});
Я не могу найти ошибку для отправки нескольких файлов,ранее это работало только для 1 файла: /.После того, как данные были отправлены, я взял их в PHP и изменил с помощью функции, чтобы зарегистрировать их в базе данных:
function upload_img($file,$nombre="",$ruta="",$max_size= "5000000",$max_archivos=5){
$tipos_de_archivos= array("image/png");
// Declare Route and Name by default
if ($ruta=="") { $ruta = $_SERVER['DOCUMENT_ROOT']."/image/".$Tipo_Objeto; }
if ($nombre=="") { $nombre = $file[$key_files[0]]['name']; }
// We verify if there is a file with the same name in the Test folder, if there is not, the upload does not continue and it notifies a change of name
if(file_exists($ruta)){
return "<br><strong style='font-weight: normal; color:red;'>A file with the same name already exists on the server, change the name before uploading it again.</strong><BR>";
}
// Multiple wrong answers to different conditions
$key_files=array_keys($file);
$numero_de_archivos= count($file[$key_files[0]]['name']);
if ($numero_de_archivos<1) {return '<div class="content-box-red">No file has been loaded.</div>';}
if ($numero_de_archivos>$max_archivos) {return '<div class="content-box-red">You can only upload<b>'.$max_archivos.' files</b> both.</div>';}
if ( !is_array($file[$key_files[0]]['tmp_name']) ){return '<div class="content-box-red">The files must be uploaded as an array.</div>';}
// We take the data from the Array files in variables separately
$tmp_name= $file[$key_files[0]]['tmp_name'];
$type= $file[$key_files[0]]['type'];
$size= $file[$key_files[0]]['size'];
$name= $file[$key_files[0]]['name'];
$error= $file[$key_files[0]]['error'];
// Multiple wrong answers to different conditions
foreach ($tmp_name as $k => $v) {
if (!is_uploaded_file($v)) {return '<div class="content-box-red">The file <b>'.$name[$k].'</b> has given error.</div>';}
}
foreach ($error as $k => $v) {
if ($v!==0) {return '<div class="content-box-red">The file <b>'.$name[$k].'</b> has given error.</div>';}
}
foreach ($type as $k => $v) {
if (!in_array($v, $tipos_de_archivos)){return '<div class="content-box-red">The file <b>'.$name[$k].'</b> its not allowed. Only PNG files.</div>';}
}
foreach ($size as $k => $v) {
// We apply the validation to the collected file, if it does not pass the validation it shows an error and it does not continue
check_valid_image_size($size[$k]);
if ($v>$max_size) {return '<div class="content-box-red">The file <b>'.$name[$k].'</b> exceeds the allowed size.</div>';}
}
// Remove special characters from each file
foreach ($name as $k => $v) {
$extension = end(explode('.', $v));
//$nombre_final[$k]=eliminar_simbolos($nombre).'-'.date('dmYHis').'-'.$k.'.'.$extension;
$nombre_final[$k]=eliminar_simbolos($nombre).$extension;
}
// I move the files to the server and update BD with each of them
foreach ($tmp_name as $k => $v) {
$destino= $ruta.$nombre_final[$k];
// We create an address of the file directly to the server by real route (To be able to operate with functions of modification, deletion, etc)
$add=$_SERVER['DOCUMENT_ROOT'].$ruta.$name[$k];
// We create another address to the file but coming to it from the domain
$paginaop = "../../..";
$add_2=$paginaop.$ruta.$name[$k];
if(!move_uploaded_file($v, $destino)){return '<div class="content-box-red">No se ha podido mover el archivo al servidor.</div>';
}else{
// An insert of the new image is made to the database to have its validation follow-up
$fechaactual_Registro = date("Y-m-d H:i:s");
$Insertar_Objeto_imginport=mysqli_query($conect,"
INSERT INTO TableBD(Column,Column,Column,Column,Column,Column,Column,Column)
VALUES ('$data','$data','$data','$data','$data','$data','$data','$data')
;");
}
$n[]=$nombre_final[$k];
}
return $n;
}
upload_img($_FILES['uploadedfile'],$nombre);
Наконец, я выполняю функцию и возвращаю эквивалентный ответ на главную страницу вdiv # CrearObjeto_Respuesta2 , ничего не выполняется при попытке загрузить какой-либо файл, что связано с тем, не доставляются ли файлы Ajax?Я что-то упускаю в функции?
Я использую эти две функции в функции upload_img , чтобы очистить специальные символы и ограничить пропорции, которые могут быть загружены, я оставляю здесь для любых ошибок:
function eliminar_simbolos($string){
$string = trim($string);
$string = str_replace(
array('á', 'à', 'ä', 'â', 'ª', 'Á', 'À', 'Â', 'Ä'),
array('a', 'a', 'a', 'a', 'a', 'A', 'A', 'A', 'A'),
$string
);
$string = str_replace(
array('é', 'è', 'ë', 'ê', 'É', 'È', 'Ê', 'Ë'),
array('e', 'e', 'e', 'e', 'E', 'E', 'E', 'E'),
$string
);
$string = str_replace(
array('í', 'ì', 'ï', 'î', 'Í', 'Ì', 'Ï', 'Î'),
array('i', 'i', 'i', 'i', 'I', 'I', 'I', 'I'),
$string
);
$string = str_replace(
array('ó', 'ò', 'ö', 'ô', 'Ó', 'Ò', 'Ö', 'Ô'),
array('o', 'o', 'o', 'o', 'O', 'O', 'O', 'O'),
$string
);
$string = str_replace(
array('ú', 'ù', 'ü', 'û', 'Ú', 'Ù', 'Û', 'Ü'),
array('u', 'u', 'u', 'u', 'U', 'U', 'U', 'U'),
$string
);
$string = str_replace(
array('ñ', 'Ñ', 'ç', 'Ç'),
array('n', 'N', 'c', 'C',),
$string
);
$string = str_replace(
array("\\", "¨", "º", "-", "~",
"#", "@", "|", "!", "\"",
"·", "$", "%", "&", "/",
"(", ")", "?", "'", "¡",
"¿", "[", "^", "<code>", "]",
"+", "}", "{", "¨", "´",
">", "< ", ";", ",", ":",
".", " "),
'-',
$string
);
return $string;
}
function check_valid_image_size( $file ) {
$allowed_mimetypes = array('image/gif', 'image/jpeg', 'image/png', 'image/bmp');
if (!in_array($file['type'], $allowed_mimetypes)){
return $file;
}
$image = getimagesize($file['tmp_name']);
$minimum = array(
'width' => '199',
'height' => '199'
);
$maximum = array(
'width' => '201',
'height' => '201'
);
$image_width = $image[0];
$image_height = $image[1];
$too_small = "<strong style='font-weight: normal; color:red;'>The image is very small. The minimum dimension is {$minimum['width']} x {$minimum['height']} pixels. Upload an image with a resolution of 200x200 pixels.</strong><BR>";
$too_large = "<strong style='font-weight: normal; color:red;'>The image is very large. The maximum dimension is {$maximum['width']} x {$maximum['height']} pixels. Upload an image with a resolution of 200x200 pixels.</strong><BR>";
if ( $image_width < $minimum['width'] || $image_height < $minimum['height'] ) {
// add in the field 'error' of the $file array the message
$file['error'] = $too_small;
return $file;
}elseif ( $image_width > $maximum['width'] || $image_height > $maximum['height'] ) {
//add in the field 'error' of the $file array the message
$file['error'] = $too_large;
return $file;
}else {
return $file;
}
}
Надеюсь, вы поможете мне, привет