Dalam bahagian ini, kami akan menyediakan beberapa fungsi tersuai untuk menjana alamat fail baharu dan menyimpannya dalam pangkalan data.
Pertama sekali, gambar yang kami muat naik mempunyai alamat, seperti 123.jpg, abc.png, dll.
Kami perlu mengekalkan akhiran .jpg, .png
Gunakan dua fungsi untuk memintas nama akhiran laluan fail asal Fungsi
strrchr() mencari kejadian terakhir rentetan dalam rentetan lain dan mengembalikan semua aksara dari kedudukan itu ke penghujung rentetan. rentetan.
fungsi substr() mengembalikan sebahagian daripada rentetan.
<?php function fileext($filename) { return substr(strrchr($filename, '.'), 1); } ?>
fileext ialah nama fungsi yang kami tetapkan dan nama fail ialah nama fail asal.
Seterusnya kami akan menjana nama laluan baharu untuk disimpan dalam pangkalan data
Di sini kami juga perlu menyesuaikan fungsi rawak
Tetapkan awalan CR- , Secara rawak pilih beberapa daripada huruf A-Z, a-z, 0-9 dan campurkan untuk menghasilkan awalan nama laluan baharu
Gunakan fungsi: strlen() Fungsi mengembalikan panjang rentetan.
<?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; } ?>
Jana nama fail sasaran
<?php $filename=explode(".",$_FILES['file']['name']); do{ $filename[0]=random(10); //设置随机数长度 $name=implode(".",$filename); $uploadfile = $uploaddir.$name; } while(file_exists($uploadfile)); ?>
fungsi explode() memecahkan rentetan menjadi tatasusunan.
fungsi implode() mengembalikan rentetan yang terdiri daripada elemen tatasusunan.
Akhir sekali pakej semua fail ke dalam fail PHP upload.php (nama boleh dibuat mengikut keperluan dan fungsi)
<?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页面显示上传的文件预览 } } ?>