上传文件

创建可访问的地址

# 会在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');,视图:
``

posted on 2023-02-28 13:48  何苦->  阅读(47)  评论(0编辑  收藏  举报

导航