Test sur fichier upload

Résolu
clemant Messages postés 6 Date d'inscription   Statut Membre Dernière intervention   -  
 clemant -
Bonjour
Voici mon pb , J ai créé un formulaire avec pièce jointe mais mes tests ne marchent pas l'envoi de fichier vide se fait quand meme malgré exit ("Le fichier est introuvable") idem pour size par contre OK pour l'extension

$page_web="[page_prec]";
$page_web=str_replace("[SESSION_ID]","?".session_name()."=".session_id(),$page_web);
$chiffre=rand(100,999).rand(100,999).rand(100,999);
$content_dir = 'upload/'; 
$content_dir.=$chiffre."/";
$envoi_mail_pj=1;
IF (!file_exists("./upload")){
umask(0);
@mkdir("./upload",0777);
}
IF (!file_exists("./upload/$chiffre")){
umask(0);
@mkdir("./upload/$chiffre",0777);
}$nb_fic=0;
$url_chemin=str_replace("formulaire.php","","[http://]".$_SERVER['HTTP_HOST'].$_SERVER['SCRIPT_NAME'] );

$tmp_file = $_FILES['id_14']['tmp_name'];

if ($tmp_file<>""){
if( !is_uploaded_file($tmp_file) )
{
exit("Le fichier est introuvable");
}

if ( $_FILES['id_14']['size']>750000){
exit("Le poids de votre fichier est trop important.");
}

// on vérifie maintenant l'extension
$type_file1 = explode(".",$_FILES['id_14']['name']);


$type_file=strtolower($type_file1[count($type_file1)-1]);
IF (!strstr($type_file, 'doc')&&  !strstr($type_file, 'jpg') ){
exit("Ce type de fichier n'est pas autorisé.");
}

// on copie le fichier dans le dossier de destination
$name_file = $_FILES['id_14']['name'];

if( @preg_match('#[\x00-\x1F\x7F-\x9F/\\]#', $name_file))
{
exit("Nom de fichier non valide");
}
else {
if( !move_uploaded_file($tmp_file, $content_dir . $name_file) )
{
exit("Impossible de copier le fichier dans $content_dir");
}
else {
  $url_upload.='fichier à télécharger sur le serveur : '.$url_chemin.$content_dir . $name_file.'<br>';
  $nb_fic++;
$tab_fic[$nb_fic][0]=$content_dir . $name_file;
$tab_fic[$nb_fic][1]=$_FILES['id_14']['type'];
} 
}
}
A voir également:

3 réponses

totodunet Messages postés 1377 Date d'inscription   Statut Membre Dernière intervention   200
 
salut moi j'utiliserai la classe SplFileInfo pour obtenir des infos sur les fichiers uploadés en php

https://www.php.net/manual/fr/class.splfileinfo.php
0
Azraka Messages postés 252 Date d'inscription   Statut Membre Dernière intervention   13
 
Tu peux tester la taille du fichier envoyé, comme tu le fais pour voir si le poids n'est pas trop important :

if ( $_FILES['id_14']['size'] > 0){
exit("Le fichier est introuvable");
}

0
clemant
 
En changeant ceci à la ligne 19 et 2O c'est ok

if (is_uploaded_file($tmp_file['tmp_name'])) {

exit("Le fichier est introuvable");
}

Merci pour vos reponses
0