ThinkChat2.0新版上线,更智能更精彩,支持会话、画图、阅读、搜索等,送10W Token,即刻开启你的AI之旅 广告
异步上传图片的方法,没有直接做成单独的插件。他集成在 layui 里面的,因此我们直接通过下载 layui 即可。官网:[http://www.layui.com/](http://www.layui.com/),下载文件,解压到 public 中: ![](https://box.kancloud.cn/5005082d641864e3cb33f582f80dc2d1_229x282.png) 新建 application\\index\\controller\\Layer.php ~~~ <?php namespace app\index\controller; use think\Controller; class Layer extends Controller { // 显示上传页面 public function upload() { return $this->fetch(); } } ~~~ 新建 application\\index\\view\\layer\\upload.html ~~~ <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>上传插件</title> <link href="/static/layui/css/layui.css" rel="stylesheet"> </head> <body> <div style="margin: 50px 50px"> <!-- 上传文件 --> <input type="file" name="up_file" class="layui-upload-file"> <div id="yl"></div> </div> <script src="/static/layui/layui.js"></script> <script> layui.use('upload', function() { var $ = layui.jquery; layui.upload({ url: "{:url('layer/doupload')}" , ext: 'jpg|png|gif' //那么,就只会支持这三种格式的上传。注意是用|分割。 , success: function (res) { // 成功后图片预览 $("#yl").html('<img src="' + res.url + '" width="100px" height="100px"/>'); } }); }); </script> </body> </html> ~~~ 访问[http://www.phper.com/index/layer/upload](http://www.phper.com/index/layer/upload) ![](https://box.kancloud.cn/6157501bc6c90231fa089274341772ad_388x199.png) 从上面的配置可见,layer/doupload 通过这个接口,处理文件上传的。而这个文件的名字 就是 input 框的 name 值。这个接口的返回值必须为: ~~~ {"code":0 ,"msg":"","url":"http://cdn.abc.com/123.jpg"'} ~~~ code = 0,表示成功。看一下 doupload 方法 ~~~ // 处理上传文件 public function doUpload() { $img = request()->file('up_file'); // 移动到框架应用根目录/public/uploads/ 目录下 $info = $img->move(ROOT_PATH . 'public' . DS . 'layer_uploads'); if($info){ // 成功上传后 获取上传信息 return json(['code' => 0, 'msg' => '', 'url' => '/layer_uploads/' . $info->getSaveName()]); }else{ // 上传失败获取错误信息 return json(['code' => 1, 'msg' => $img->getError(), 'url' => '']); } } ~~~ 这样上传完文件,就可以预览了。 ![](https://box.kancloud.cn/b453faaf7bb49c9f742924567acd21a4_789x606.png)