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); //设置随机数长度 $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/";//设置文件保存目录 注意包含/ $type=array("jpg","gif","bmp","jpeg","png");//设置允许上传文件的类型 //获取文件后缀名函数 function fileext($filename) { return substr(strrchr($filename, '.'), 1); } //生成随机文件名函数 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>"; } //生成目标文件的文件名 else{ $filename=explode(".",$_FILES['file']['name']); do{ $filename[0]=random(10); //设置随机数长度 $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 {//输出图片预览 echo "<tr><td>您的文件已经上传完毕 上传图片预览: <br><img src='$uploadfile'></td></tr>"; echo "<tr><td><a href='tu2.php'style='margin-left: 3%;'>继续上传</a></td></tr>"; } //可以在前端HTML页面显示上传的文件预览 } } ?>