Muat naik fail dipermudahkan
Berbanding dengan proses muat naik asal yang menyusahkan, rangka kerja telah dipermudahkan ke tahap yang terbaik, menjadikan operasi muat naik lebih mudah dan lebih mudah
Muat naik fail
Muat naik terbina dalam hanya dimuat naik ke pelayan tempatan, dimuat naik ke platform jauh atau pihak ketiga memerlukan sambungan tambahan untuk dipasang.
Andaikan kod borang adalah seperti berikut:
<form action="/index/index/upload" enctype="multipart/form-data" method="post"> <input type="file" name="image" /> <br> <input type="submit" value="上传" /> </form>
Kemudian tambah kod berikut dalam pengawal:
public function upload(){ // 获取表单上传文件 例如上传了001.jpg $file = request()->file('image'); // 上传到本地服务器 $savename = \think\facade\Filesystem::putFile( 'topic', $file); }
Pembolehubah $file ialah objek thinkFile Anda boleh mendapatkan maklumat fail berkaitan dan menyokong penggunaan sifat dan kaedah Kelas SplFileObject.
Muat naik berbilang fail
Jika anda menggunakan borang muat naik berbilang fail, contohnya:
<form action="/index/index/upload" enctype="multipart/form-data" method="post"> <input type="file" name="image[]" /> <br> <input type="file" name="image[]" /> <br> <input type="file" name="image[]" /> <br> <input type="submit" value="上传" /> </form>
Kod pengawal boleh ditukar kepada:
public function upload(){ // 获取表单上传文件 $files = request()->file('image'); $savename = []; foreach($files as $file){ $savename[] = \think\facade\Filesystem::putFile( 'topic', $file); } }
Pengesahan muat naikfail kemas kini
termasuk fail Saiz, jenis fail dan akhiran:public function upload(){ // 获取表单上传文件 $files = request()->file(); try { validate(['image'=>'filesize:10240|fileExt:jpg|image:200,200,jpg']) ->check($files); $savename = []; foreach($files as $file) { $savename[] = \think\facade\Filesystem::putFile( 'topic', $file); } } catch (think\exception\ValidateException $e) { echo $e->getMessage(); } }Jika fail yang dimuat naik gagal pengesahan, kaedah pindah akan mengembalikan palsu. Parameter pengesahan atau tatasusunan
fail MIME taip, berbilang dipisahkan koma atau tatasusunan | |||||||||
---|---|---|---|---|---|---|---|---|---|
jenis | |||||||||
Peraturan | Penerangan |
---|---|
tarikh mikrosaat | berdasarkan mikrosaat |
md5 | |
sha1 |
the md5 dan sha1 peraturan secara automatik akan menggunakan dua aksara pertama nilai hash sebagai subdirektori, dan nilai Hash berikut sebagai nama fail.
Jika anda perlu menggunakan peraturan penamaan tersuai, anda boleh memasukkan fungsi atau kaedah dalam kaedah peraturan, contohnya:// 获取表单上传文件 例如上传了001.jpg $file = request()->file('image'); // 移动到服务器的上传目录 并且使用uniqid规则 $file->rule('uniqid')->move('../uploads/');Nama fail yang dijana adalah serupa dengan:
application/uploads/573d3b6d7abe2.jpgJika anda ingin menyimpan yang asal nama fail, anda boleh menggunakan:
// 获取表单上传文件 例如上传了001.jpg $file = request()->file('image'); // 移动到服务器的上传目录 并且使用原文件名 $file->move('../uploads/','');Secara lalai, fail dengan nama yang sama dalam direktori muat naik pelayan akan ditimpa Jika anda tidak mahu menulis ganti, anda boleh menggunakan:
// 获取表单上传文件 例如上传了001.jpg $file = request()->file('image'); // 移动到服务器的上传目录 并且设置不覆盖 $file->move('../uploads/',true,false);
Dapatkan nilai cincangan cincang fail.
Anda boleh mendapatkan nilai cincangan cincang bagi fail yang dimuat naik, contohnya:
// 获取表单上传文件 $file = request()->file('image'); // 移动到服务器的上传目录 并且使用原文件名 $upload = $file->move('/home/www/upload/'); // 获取上传文件的hash散列值 echo $upload->md5(); echo $upload->sha1();Anda boleh menggunakan kaedah cincang secara seragam untuk mendapatkan nilai cincangan fail
// 获取表单上传文件 $file = request()->file('image'); // 移动到服务器的上传目录 并且使用原文件名 $upload = $file->move('/home/www/upload/'); // 获取上传文件的hash散列值 echo $upload->hash('sha1'); echo $upload->hash('md5');
Kembalikan objek
Selepas itu berjaya dimuat naik masih merupakan objek Fail yang dikembalikan Sebagai tambahan kepada kaedah objek Fail itu sendiri, anda juga boleh menggunakan sifat dan kaedah SplFileObject Memudahkan pemprosesan fail berikutnya.