je cherche à limiter le nombre d'image après l'upload. J'utilise un script java pour charger les images et les voir au fur et à mesure. Une fois 5 images uploader, je voudrais afficher une message avec java "nombre d'image maxi atteint" pas exemple.
Je limite l'upload avec PHP, je vous met les scripts que j'utilise ça sera mieux pour comprendre.
<div class="form-group">
<input type="file" name="multiple_files" id="multiple_files" class="file" multiple />
<span class="text-muted">Uniquement au format .jpg, png, .gif et poids maximum 2 Mo</span>
<div class="input-group col-xs-12">
<span class="input-group-addon"><i class="glyphicon glyphicon-picture"></i></span>
<input type="text" class="form-control input-lg" disabled placeholder="Charger une image">
<span class="input-group-btn">
<button class="browse btn btn-primary input-lg" type="button"><i class="glyphicon glyphicon-search"></i> Choisir une image</button>
</span>
</div>
<span id="error_multiple_files"></span>
<br />
<div class="row" id="image_table">
</div>
</div>
Le code java que j'utilise dans le fichier html var error_images = '';
var form_data = new FormData();
var files = $('#multiple_files')[0].files;
if(files.length > 3)
{
error_images += 'Vous ne pouvez pas télécharger plus de 3 images';
}
else
{
for(var i=0; i<files.length; i++)
{
var name = document.getElementById("multiple_files").files[i].name;
var ext = name.split('.').pop().toLowerCase();
if(jQuery.inArray(ext, ['gif','png','jpg','jpeg']) == -1)
{
error_images += '<p>Fichier invalide !</p>';
}
var oFReader = new FileReader();
oFReader.readAsDataURL(document.getElementById("multiple_files").files[i]);
var f = document.getElementById("multiple_files").files[i];
var fsize = f.size||f.fileSize;
if(fsize > 200000)
{
error_images += '<p>L\'image est trop grosse</p>';
}
else
{
form_data.append("file[]", document.getElementById('multiple_files').files[i]);
}
}
}
if(error_images == '')
{
$.ajax({
url:"upload.php",
method:"POST",
data: form_data,
contentType: false,
cache: false,
processData: false,
beforeSend:function(){
$('#error_multiple_files').html('<br /><label class="text-primary"><img src="img/ajax-loader.gif" /> Téléchargement en cours...</label>');
},
success:function(data)
{
$('#error_multiple_files').html('<br /><label class="text-success">Téléchargement terminé</label>');
load_image_data();
}
});
}
else
{
$('#multiple_files').val('');
$('#error_multiple_files').html("<span class='text-danger'>"+error_images+"</span>");
return false;
}
et le code PHP pour limiter et uploader les images<?php session_start();
//upload.php
include('config.inc.php');
if(count($_FILES["file"]["name"]) > 0)
{
//$output = '';
sleep(3);
for($count=0; $count<count($_FILES["file"]["name"]); $count++)
{
$file_name = $_FILES["file"]["name"][$count];
$tmp_name = $_FILES["file"]['tmp_name'][$count];
$file_array = explode(".", $file_name);
$file_extension = end($file_array);
if(file_already_uploaded($file_name, $bdd))
{
$file_name = $file_array[0] . '-'. rand() . '.' . $file_extension;
}
if(file_count($count, $bdd))
{
$location = 'img/' . $file_name;
if(move_uploaded_file($tmp_name, $location))
{
$query = "
INSERT INTO tbl_image (image_name, id_membre, image_description)
VALUES ('".$file_name."', '".$_SESSION['id']."', '')
";
$statement = $bdd->prepare($query);
$statement->execute();
}
}
}
}
function file_already_uploaded($file_name, $bdd)
{
$query = "SELECT * FROM tbl_image WHERE image_name = '".$file_name."'";
$statement = $bdd->prepare($query);
$statement->execute();
$number_of_rows = $statement->rowCount();
if($number_of_rows > 0)
{
return true;
}
else
{
return false;
}
}
function file_count($count, $bdd)
{
$query = "SELECT * FROM tbl_image WHERE id_membre = '".$_SESSION['id']."'";
$nb = $bdd->prepare($query);
$nb->execute();
$nb_of_rows = $nb->rowCount();
if($nb_of_rows < 5)
{
return true;
}
else
{
return false;
}
}
?>
Merci de votre aide...