一.上傳功能
1. 如果要實現上傳功能,首先需要建立一個上傳表單,具體如下:
<form action="http://localhost/tp6/public/upload"enctype="multipart/form-data" method="post"><input type="file" name="image"><input type="submit" value="確定"></form>
2. 創建一個控制器upload.php,并使用Request::file來獲取上傳數據:
//獲取表單的上傳數據
$file = Request::file('image');
然后創建一個控制器upload.php:
3. 使用Filesystem::putfile()方法,來實現上傳文件,并寫入指定目錄;
默認保存到storage目錄下。
4. 上傳后返回的結果$info,可以輸出當前上傳文件的地址;
//目錄在runtime/storage/toppic/時間/文件
$info = Filesystem::putFile('topic', $file);
默認保存到storage目錄下。
5. 如果想更改上傳文件的默認配置,在config/filesystem.php中配置;
'root' => app()->getRuntimePath() . 'storage',
?
6. 默認規則下,上傳的文件是以日期和微秒生成的方式:date;
7. 生成的規則還支持另外兩種方式:md5和sha1;
$info = Filesystem::putFile('topic', $file, 'md5');
但是這樣子看多難受,直接用日期更好
8. 批量上傳,使用image[]作為名稱,并使用foreach()遍歷上傳;
<input type="file" name="image[]"><input type="file" name="image[]"><input type="file" name="image[]">$files = Request::file('image');$info = [];foreach ($files as $file) {$info[] = Filesystem::putFile('topic', $file);}dump($info);
9. 結合之前的驗證器,我們寫一個針對upload的獨立驗證;
//上傳圖片文件
$file = Request::file('image');//編寫上傳規則,必須是上傳文件,必須是jpg.png.gif后綴
$validate = Validate::rule(['image'=> 'file|fileExt:jpg,png,gif']);//得到上傳文件和規則比對
$result = $validate->check(['image'=>$file]);//通過輸出地址,否則輸出錯誤
if ($result) {$info = Filesystem::putFile('topic', $file);dump($info);} else {dump($validate->getError());}