一、文件上传
在laravel里面实现文件的上传是很简单的,压根不用引入第三方的类库,作者把上传作为一个简单的http请求看待的
可以使用use Illuminate\Http\Request;
实例提供的file
方法或者动态属性来访问上传文件,file
返回Illuminate\Http\UploadedFile;
类的一个实例,该类继承自PHP标准库中提供与文件交互方法的SplFileInfo
类:
$file
=$request
-> file('photo');$file
=$request
-> photo;
你可以使用hasFile
方法判断文件在请求中是否存在:
if ($request -> hasFile('photo')) { // }
验证文件是否上传成功
使用isValid
方法判断文件在上传过程中是否出错:
if ($request -> file('photo') -> isValid()) { // }
更多方法请访问:
思路: 1、先去判断文件是否正常和存在 2、获取相关的信息(可选) 3、保存文件(其实就是移动文件到新的目录)
1.1 修改表结构,添加头像字段
例:
效果:
1.2 创建添加数据的表单和路由
添加数据表单代码:
1.3 上传文件的保存路径
创建上传文件的保存路径(一定要在public文件下,确保浏览器能够访问。)
控制器代码:
public function auto_verify(Request $request) {
// 1、接收并验证数据是否符合规则
$this -> validate($request, [
// 此处是一个键值数组 "验证对字段名" => "规则1|规则2|规则3..."
'name' => 'required|min:2|max:20|unique:member', // 姓名是必须对,最短2个字符,最长20个字符,在member表里名字是唯一的
'age' => 'required|integer|min:1|max:200', // 必须的,整型,此处min和max表示最小为1,最大为200
//,因为我们这边定义了整型,laravel会自动判断min和max为数字
'email' => 'required|email', // 验证邮箱
]);
// 2、处理文件上传
// 判断文件是否上传正常与存在
if ($request -> hasFile('avatar') && $request -> file('avatar') -> isValid()) {
// 对文件对重新命名
$name = sha1(time().rand(100000,999999)). '.' .$request -> file('avatar') -> extension();
dump($name);
// 文件移动操作
$request -> file('avatar') -> move('./statics/upload', $name);
// 存文件地址
$path = '/statics/upload/'.$name;
}
// 3、通过验证写入数据库
$data = $request -> except(['_token', 'avatar']);
$data['avatar'] = isset($path) ? $path : '';
$result = Member::insert($data);
// 4、告知用户操作是否成功
return $result ? 'OK' : 'Failed';
}
效果:
在学习的php的路上,如果你觉得本文对你有所帮助的话,那就请关注点赞评论三连吧,谢谢,你的肯定是我写博的另一个支持。