J'essaie de valider tous mes fichiers téléchargés, en fait, je fais la taille du fichier et la validation du type de fichier. Si la validation échoue pour un fichier, j'enregistre ce fichier pour le message d'erreur.J'utilise pour chaque boucle le traitement du fichier et si la condition pour la taille du fichier et la validation du type de fichier, mais le problème est seulement si la condition est évaluée et la seconde n'est pas testé. Les deux si mensonges à l'intérieur de chaque boucle. Toute aide sera appréciée ...Validation de téléchargement de fichiers multiples en PHP ne fonctionne pas
Code
public function validate_my_files(){
foreach($this->files_from_user_validateit['name'] as $key => $value){
$name = $this->files_from_user_validateit['name'][$key];
$size = $this->files_from_user_validateit['size'][$key];
$type = $this->files_from_user_validateit['type'][$key];
//$error[$key] = $this->files_from_user_validateit['error'][$key];
//$tmp_name[$key] = $this->files_from_user_validateit['tmp_name'][$key];
//not allowed file extensions
$not_allowed_ext = array('php','js','asp','aspx','py','c','c++','jsp','perl','cfg','css','java',
'json');
//lets find the extension of the filename
$est = explode('.',$name);
$ext = $est[count($est)-1];
if(in_array($ext,$not_allowed_ext)){
//putting in session for later message
$_SESSION['ext'][] = $name;
}
//lets check for file size now, lets not allow file greater than 50MB
if($size > 47185920){
$_SESSION['size'][] = $name;
}
}
print_r($_SESSION);die();
}
seule extension de fichier si on teste alors si la condition pour la taille ne pas fonctionne ...
EDIT
Malheureusement, il est énorme problème avec mon formulaire de téléchargement. Les fichiers sélectionnés plus tard ne sont traités que par $ _FILES, j'utilise le téléchargement de fichiers multiples et l'affichage des fichiers sélectionnés sur la table dans la même page en utilisant le script java. disons que je sélectionne 5 fichiers au début (les 5 fichiers affichés sur la table) et sélectionnez à nouveau 3 fichiers, maintenant il y a 8 fichiers sur la table.Mais seulement les 3 derniers fichiers que j'ai sélectionnés 2ème fois est disponible dans le tableau $ _FILES. S'il vous plaît quelqu'un a la solution pour cette ...
Rééditer
Id « myfiles » est pour la tenue de plusieurs fichiers à partir du champ de fichier d'entrée. Id 'dataS' est div cette table créée par ci-dessous donnée JS. SI 'tot' est une taille totale du fichier sur la table. FORMULAIRE ENTREE:
<form id="uploadform" method="post" action="" enctype="multipart/form-data">
<div id="datas"></div>
<div id="tot"><h3>TOTAL SIZE:</h3> <span id="zise">0 MB</span></div>
<div id="addfiles"><input type="file" name="addfiles[]" value="Add Files" multiple="multiple" id="myfiles" ></div>
<input type="submit" name="sbmtfile" style="color:green;font-size: 17px;">
</form>
Mes JS:
<script type="text/javascript">
var s = 1;
var totsize = 0;
myfiles.onchange = function(){
var a = document.getElementById('myfiles').files;
var b = document.getElementById('datas');
var total = document.getElementById('tot');//for table title
var c = document.createElement('TABLE');
c.className = 'showtable';
c.border = '1px';
c.cellspacing = '0';
c.cellpadding = '2';
c.width = '100%'
for(var i = 0; i < a.length; i++){
var f = document.createElement('TR');
c.appendChild(f);
//for total file size
totsize = totsize + a[i].size;
var r = document.createElement('TD');
r.align = 'center';
r.width = '152px';
f.appendChild(r);
r.appendChild(document.createTextNode(s++));
var y = document.createElement('TD');
y.align = 'left';
y.width = '610px';
y.appendChild(document.createTextNode(a[i].name));
f.appendChild(y);
var z = document.createElement('TD');
z.align = 'center';
r.width = '152px';
z.appendChild(document.createTextNode(Math.round((a[i].size)/1024)));
f.appendChild(z);
var x = document.createElement('TD');
x.align = 'center';
x.width = '152px';
x.appendChild(document.createTextNode('DELETE'));
f.appendChild(x);
}
b.appendChild(c);
document.getElementById('zise').innerHTML = Math.round((totsize/(1024*1024)))+ ' MB';
}
</script>
est-ce que 'files_from_user_validateit()' est une fonction personnalisée? Puisque vous vérifiez 'if ($ size> 47185920)', qui est essentiellement 'if ($ this-> files_from_user_validateit ['size'] [$ key];> 47185920)', vous devez vérifier la valeur renvoyée. – Sean
@Sean ($ this-> files_from_user_validateit) détient tous mes fichiers téléchargés, que je reçois à partir du formulaire, c'est à dire qu'il s'agit d'un tableau de fichiers et qu'il fonctionne bien, je peux obtenir tous mes fichiers téléchargés ici ... – mindre