laravel的使用-文件上传

目前php的各大常用框架都为我们直接封装好了文件上传的相关代码,不用再劳心劳力的自己写,使用起来也大同小异,省心不少

一  准备表单页面





文件上传测试




  
{{csrf_field()}}

使用laravel要注意表单的跨域问题,在表单里写上{{csrf_field}} ,查看页面源码这实际上就是一个隐藏域,表单会带上_token;还需注意enctype不要遗漏或者写错,且表单提交方式为post

二  文件上传代码

无论框架如何变化文件上传也就是判断文件是否存在、是否有效、类型是否正确、转存文件这几个步骤,直接上代码

hasFile('file')&&$request->file('file')->isValid()){
            $file=$request->file('file');
            $allowed_extensions = ["png", "jpg", "gif"];
            if (!in_array($file->getClientOriginalExtension(), $allowed_extensions)) {
                dd('只能上传png,jpg和gif格式的图片.');
            }else{
                $destinationPath = 'storage/uploads/'; //public 文件夹下面建 storage/uploads 文件夹
                $extension = $file->getClientOriginalExtension();
                $fileName=md5(time().rand(1,1000)).'.'.$extension;
                $file->move($destinationPath,$fileName);
                $filePath = asset($destinationPath.$fileName);
                dd("文件路径:".asset($destinationPath.$fileName));
            }
        }else{
            dd('图片上传失败请重试.');
        }
    }
}

其中使用了助手函数asset,该函数返回一个网络URL地址,为了演示方便文件直接存到public/storage/uploads下,实际开发建议把上传的文件和项目分开,使用nginx等静态资源的方式读取和展示

你可能感兴趣的:(laravel,PHP)