ThinkPHP6项目基操(17.实战部分 Filesystem文件上传)
生活随笔
收集整理的這篇文章主要介紹了
ThinkPHP6项目基操(17.实战部分 Filesystem文件上传)
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
Filesystem文件上傳
控制器:
<?php namespace app\admin\controller; use app\BaseController; use think\facade\Filesystem; use think\facade\View;class Upload extends BaseController {// 上傳頁面public function index(){return View::fetch("index");}// 上傳文件方法public function image(){if(!$this->request->isPost()){return show(config("status.error"), "請(qǐng)求不合法");}$file = $this->request->file("file");$savename = Filesystem::putFile('topic', $file);if(!$savename){return show(config("status.error"), "上傳圖片失敗");}return show(config("status.success"), "上傳成功", ["savename"=>$savename]);} }默認(rèn)情況下是上傳到本地服務(wù)器,會(huì)在runtime/storage目錄下面生成以當(dāng)前日期為子目錄,以微秒時(shí)間的md5編碼為文件名的文件,例如:
考慮到runtime目錄不能直接訪問,如果你希望上傳的文件是可以直接訪問或者下載的話,可以使用public存儲(chǔ)方式(也可以自定義目錄):
上傳結(jié)果:
為什么這里多了一層storage目錄呢?因?yàn)樵赾onfig配置文件里配置了默認(rèn)的根目錄,在
filesystem.php 配置文件:
如果不希望有storage目錄,可以修改public的配置:
'root' => app()->getRootPath() . 'public',結(jié)果:
前端頁面
這里是使用了layuiadmin的頁面:
<!DOCTYPE html> <html> <head><meta charset="utf-8"><title>上傳</title><meta name="renderer" content="webkit"><meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"><meta name="viewport" content="width=device-width, initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0, user-scalable=0"><link rel="stylesheet" href="{__STATIC__}/admin/layuiadmin/layui/css/layui.css" media="all"><link rel="stylesheet" href="{__STATIC__}/admin/layuiadmin/style/admin.css" media="all"> </head> <body><style>.layui-upload-img{width: 92px; height: 92px; margin: 0 10px 10px 0;}</style><div class="layui-fluid"><div class="layui-row layui-col-space15"><div class="layui-col-md12"><div class="layui-card"><div class="layui-card-header">普通圖片上傳</div><div class="layui-card-body"><div class="layui-upload"><button type="button" class="layui-btn" id="test-upload-normal">上傳圖片</button><div class="layui-upload-list"><img class="layui-upload-img" id="test-upload-normal-img"><p id="test-upload-demoText"></p></div></div></div></div></div></div></div><script src="{__STATIC__}/admin/layuiadmin/layui/layui.js"></script><script>layui.config({base: '{__STATIC__}/admin/layuiadmin/'}).extend({index: 'lib/index'}).use(['index', 'upload'], function(){var $ = layui.jquery,upload = layui.upload;//普通圖片上傳var uploadInst = upload.render({elem: '#test-upload-normal',url: '/admin/upload/image',before: function(obj){//預(yù)讀本地文件示例,不支持ie8obj.preview(function(index, file, result){$('#test-upload-normal-img').attr('src', result);});},done: function(res){if(res.status === 1){return layer.msg('上傳成功');}else{return layer.msg('上傳失敗');}},error: function(){var demoText = $('#test-upload-demoText');demoText.html('<span style="color: #FF5722;">上傳失敗</span> <a class="layui-btn layui-btn-mini demo-reload">重試</a>');demoText.find('.demo-reload').on('click', function(){uploadInst.upload();});}});});</script> </body> </html>Tips: 可以在上傳控制器做文件的類型、大小等屬性校驗(yàn)。
??重磅推薦:免費(fèi)商用電商系統(tǒng)
😏想白嫖整個(gè)電商系統(tǒng)用來商用?
🤑想有自己的商城實(shí)現(xiàn)財(cái)富自由?
🤓想學(xué)習(xí)最佳實(shí)踐提升自己技術(shù)?
快來進(jìn)入🚀 傳送門 🚀,開源免費(fèi)、完整示例帶你快速入門,輕松二開,走上人生巔峰!👨?🎓
總結(jié)
以上是生活随笔為你收集整理的ThinkPHP6项目基操(17.实战部分 Filesystem文件上传)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【ES6(2015)】解构赋值Desct
- 下一篇: python爬虫短片_Python爬虫练