Téléchargement simple de fichiers vers la base de données MySql développée en PHP (3)
Dans cette section, nous allons mettre en place plusieurs fonctions personnalisées pour générer de nouvelles adresses de fichiers et les enregistrer dans la base de données.
Tout d'abord, les photos que nous téléchargeons ont une adresse, telle que 123.jpg, abc.png, etc.
Nous devons conserver le suffixe .jpg, .png
Utilisez deux fonctions pour intercepter le nom du suffixe du chemin du fichier d'origine. La fonction
strrchr() trouve la dernière occurrence d'une cha?ne dans une autre cha?ne et renvoie tous les caractères de cette position jusqu'à la fin du cha?ne.
La fonction substr() renvoie une partie d'une cha?ne.
<?php function fileext($filename) { return substr(strrchr($filename, '.'), 1); } ?>
fileext est le nom de la fonction que nous avons défini et filename est le nom du fichier d'origine.
Ensuite, nous allons générer un nouveau nom de chemin à enregistrer dans la base de données
Ici, nous devons également personnaliser une fonction aléatoire
Définir un préfixe CR- , de manière aléatoire sélectionnez-en quelques-unes parmi les lettres A-Z, a-z, 0-9 et mélangez-les pour générer un nouveau préfixe de nom de chemin
Utilisez la fonction : strlen() La fonction renvoie la longueur de la cha?ne. La fonction
<?php function random($length) { $hash = 'CR-'; $chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmnopqrstuvwxyz'; $max = strlen($chars) - 1; mt_srand((double)microtime() * 1000000); for($i = 0; $i < $length; $i++) { $hash .= $chars[mt_rand(0, $max)]; } return $hash; } ?>
Générer le nom du fichier cible
<?php $filename=explode(".",$_FILES['file']['name']); do{ $filename[0]=random(10); //設(shè)置隨機數(shù)長度 $name=implode(".",$filename); $uploadfile = $uploaddir.$name; } while(file_exists($uploadfile)); ?>
explode() divise la cha?ne en un tableau. La fonction
implode() renvoie une cha?ne composée d'éléments de tableau.
Enfin, regroupez tous les fichiers dans un fichier PHP upload.php (le nom peut être créé en fonction des besoins et des fonctions)
<?php $uploaddir = "upfiles/";//設(shè)置文件保存目錄 注意包含/ $type=array("jpg","gif","bmp","jpeg","png");//設(shè)置允許上傳文件的類型 //獲取文件后綴名函數(shù) function fileext($filename) { return substr(strrchr($filename, '.'), 1); } //生成隨機文件名函數(shù) function random($length) { $hash = 'CR-'; $chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmnopqrstuvwxyz'; $max = strlen($chars) - 1; mt_srand((double)microtime() * 1000000); for($i = 0; $i < $length; $i++) { $hash .= $chars[mt_rand(0, $max)]; } return $hash; } $a = strtolower(fileext($_FILES['file']['name'])); //判斷文件類型 if(!in_array(strtolower(fileext($_FILES['file']['name'])),$type)) { $text=implode(",",$type); echo "您只能上傳以下類型文件: ",$text,"<br>"; } //生成目標(biāo)文件的文件名 else{ $filename=explode(".",$_FILES['file']['name']); do{ $filename[0]=random(10); //設(shè)置隨機數(shù)長度 $name=implode(".",$filename); $uploadfile = $uploaddir.$name; } while(file_exists($uploadfile)); if (move_uploaded_file($_FILES['file']['tmp_name'],$uploadfile)) { if(is_uploaded_file($_FILES['file']['tmp_name'])) { echo "上傳失敗!"; } else {//輸出圖片預(yù)覽 echo "<tr><td>您的文件已經(jīng)上傳完畢 上傳圖片預(yù)覽: <br><img src='$uploadfile'></td></tr>"; echo "<tr><td><a href='tu2.php'style='margin-left: 3%;'>繼續(xù)上傳</a></td></tr>"; } //可以在前端HTML頁面顯示上傳的文件預(yù)覽 } } ?>