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]];
}

猜你喜欢

转载自blog.csdn.net/gudada010/article/details/130895127