thinkphp6+layui实现文件上传功能

thinkphp6+layui实现文件上传功能

1.问题概述

开发中需要将一些模板文件传入服务器好让用户下载模板文件。

2.解决办法

前端:

layui.use(['jquery', 'layer', 'upload'], function () {
	var upload = layui.upload;
   	var uploadInst = upload.render({
      elem: '#test1',
      url: 'filename/Controller/upload',//文件名/控制器名/函数名
      accept: 'file',
      exts:'pdf',
      multiple:true,
      number:5,
      done: function(res){
            if (res.code > 0) {
                layer.msg(res.msg, {icon: 1, time: 3000});
   	 		} else {
       			layer.msg(res.msg, {icon: 2, time: 2000});
   			}
      }
    })

Controller:

    public function upload()
    {
        $file=Request::file('file');
        $fileName=$file->getOriginalName();
        validate(['file'=>['fileSize'=>10*1024*1024]])->check(['file'=>$file]);
        return json(SysFileService::upload($file,$fileName));
    }

Service:

public static function upload($file,$fileName){
// 上传到本地服务器
$savename = Filesystem::disk('file')->putFileAs( '', $file, $fileName);
if($savename){
    //数据库存储文件地址
    $path=Filesystem::getDiskConfig('file','url').'/'.str_replace('\\','/',$savename);
    $data['filename']=$fileName;
    $data['filepath']=$path;
    $data['id'] = Uuid::uuid4()->toString();
    Db::startTrans();
    try {
        SysFile::create($data);//这里使用的是模型新增数据库数据
        Db::commit();
    } catch (\Exception $e) {
        Db::rollback();
        return ['code'=>0,'msg'=>$e->getMessage()];
    }
    return ['code'=>1,'msg'=>"上传成功","data"=>["src"=>$path]];
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

杜柠函

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值