Muat naik fail mudah ke pangkalan data MySql dibangunkan dalam PHP (3)
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); //設(shè)置隨機數(shù)長度 $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/";//設(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>"; } //生成目標文件的文件名 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ù)覽 } } ?>