admin 发表于 2022-6-8 12:57:20

thinkphp6 + layui upload 图片、文件上传功能实现

1.前段

1、layui 代码
<div class="layui-form-item">
      <label class="layui-form-label">上传图片</label>
                <div class="layui-input-block" id="image1">
                        <img src="/static/image_icon/WechatIMG2.png" alt="" id="image2" style="height: 80px;width: 80px">
                        <input type="hidden" name="image" id="image">
                </div>
</div>``

JS代码
<script>
      layui.use(['form', 'jquery', 'layer', 'upload'], function() {
            var form = layui.form,
                layer = layui.layer,
                upload = layui.upload;
            
            upload.render({
                elem: '#image1',
                url: '/upload/upload/image',//提交入口文件自己更改
                accept: 'image',
                size: 3 * 1024,
                before: function(obj) {},
                done: function(res) {
                  if (res.status == 200) {
                        layer.msg(res.msg, {
                            icon: 1
                        })
                        $('#image2').attr('src', res.path)
                        $('#image').val(res.path)
                  } else {
                        layer.msg(res.msg, {
                            icon: 2
                        })
                  }
                }
            });
      })
    </script>2.后端
TP6 后台代码
namespace app\upload\controller;

use think\facade\Config;
use think\facade\Env;
class Upload
{
    /**图片上传*/
    public function image()
    {
      $file = request()->file('file');
      // 移动到框架应用根目录/uploads/ 目录下
      try{
            // 验证
            validate(['imgFile'=>[
                'fileSize' => 410241024,
                'fileExt' => 'jpg,jpeg,png,bmp,gif',
                'fileMime' => 'image/jpeg,image/png,image/gif', //这个一定要加上,很重要我认为!
            ]])->check(['imgFile' => $file]);
            // 上传图片到本地服务器
            $saveName = \think\facade\Filesystem::disk('public')->putFile('',$file);
            $arr = ['status' => 200, 'msg' => '成功', 'path' => '/upload/'. $saveName];
            return json($arr);
      } catch (\Exception $e) {
            // 验证失败 输出错误信息
            return $this->exceptionHandle($e,'图片上传失败!' . $e->getMessage(),'json','');
      }
    }
}3、修改文件 ->项目根目录->config.php
上传序偶保存的目录
把storage 这三个参数修改成 upload结束:这样就完全可以 最终会在 public 文件下 生成 upload文件

页: [1]
查看完整版本: thinkphp6 + layui upload 图片、文件上传功能实现