上传文件
创建可访问的地址
# 会在public下面创建一个连接文件夹
php artisan storage:link
上传文件第一种
public function upload(Request $request){
if ($request->isMethod('POST')) { //判断是否是POST上传,应该不会有人用get吧,恩,不会的
//在源生的php代码中是使用$_FILE来查看上传文件的属性
//但是在laravel里面有更好的封装好的方法,就是下面这个
//显示的属性更多
$fileCharater = $request->file('source');
if ($fileCharater->isValid()) { //括号里面的是必须加的哦
//如果括号里面的不加上的话,下面的方法也无法调用的
//获取文件的扩展名
$ext = $fileCharater->getClientOriginalExtension();
//获取文件的绝对路径
$path = $fileCharater->getRealPath();
//定义文件名
$filename = date('Y-m-d-h-i-s').'.'.$ext;
//存储文件。disk里面的public。总的来说,就是调用disk模块里的public配置
Storage::disk('public')->put($filename, file_get_contents($path));
}
}
return view('upload');
}
第二种
if($request -> hasFile('avatar') && $request -> file('avatar') -> isValid()){
//文件扩展名
$file['ext'] = $request -> avatar -> extension();
//文件的路径
$file['path'] = $request -> avatar -> path();
//文件mime
$file['mine'] = $request -> avatar -> getMimeType();
//原始文件名
$file['originName'] = $request -> avatar -> getClientOriginalName();
//文件尺寸
$file['size'] = $request -> avatar -> getClientSize();
$file['uploadName'] = sha1($file['originName'].time().rand(1000, 9999)). '.'. $file['ext'];
$request -> avatar -> move('./uploads/', $file['uploadName']);
//获取所有数据
$data = $request -> all();
$data['avatar'] = './upload/'.$file['uploadName'];
$res = MemberModel::create($data);
dd($res);
}else {
$message = $request -> avatar -> getErrorMessage();
dd($message);
}
```
storage 有个方法叫 url(),返回前端可访问的路径是 Storage::url($path),还有一个前提条件就是需要将你 storage 下的目录 agency 软连接到 public 下,框架自带的一个命令是 php artisan storage:link,但是这个命令映射的是 storage 下的 public 目录,所以建议你这样保存:$path = $request->file('tax_registration')->store('public/agency');,视图:
``