Laravel操作上传文件的方法
1、获取上传的文件
$file=$request->file('file');
2、获取上传文件的文件名(带后缀,如abc.png)
$filename=$file->getClientOriginalName();
3、获取上传文件的后缀(如abc.png,获取到的为png)
$fileextension=$file->getClientOriginalExtension();
4、获取上传文件的大小
$filesize=$file->getClientSize();
5、获取缓存在tmp目录下的文件名(带后缀,如php8933.tmp)
$filaname=$file->getFilename();
6、获取上传的文件缓存在tmp文件夹下的绝对路径
$realpath=$file->getRealPath();
7、将缓存在tmp目录下的文件移到某个位置,返回的是这个文件移动过后的路径
$path=$file->move(path,newname);
move()方法有两个参数,第一个参数是文件移到哪个文件夹下的路径,第二个参数是将上传的文件重新命名的文件名
8、检测上传的文件是否合法,返回值为true或false
$file->isValid()
上传到本地服务器
$file = $request->file('image');
//验证是否上传成功
if ($file->isValid()) {
$originalName = $file->getClientOriginalName();// 原文件名
$ext = $file->getClientOriginalExtension();// 扩展名
$type = $file->getClientMimeType();
$realPath = $file->getRealPath();// 临时绝对路径
$fileName = date('Ymd').'/'.uniqid().'.'.$ext;// 自定义文件名
//存储
$bool = Storage::disk('upload')->put($fileName, file_get_contents($realPath));
dd($bool);
}
文件上传到第三方平台(OSS/七牛云)
安装vendor扩展: composer require tinymeng/uploads -vvv
use tinymeng\tools\Strings;
/**
* Name: 文件上传
* Author: Tinymeng <666@majiameng.com>
* @param $data
* @return bool|string
* @throws \Exception
*/
protected function uploadFile($data){
$file=$request->file('file');
$save_dir = "file";
//获取文件信息
$data = [
'type'=>$this->type,
'save_dir'=>save_dir,
'file_name'=>$file->getClientOriginalName(),
'file_type'=>$file->file_type,
'file_ext'=>$file->getClientOriginalExtension(),
'file_size'=>$file->getClientSize(),
];
$data['file_md5'] = md5(implode(',',$data));
//使用file_md5,查询数据库是否存在此文件
//如有文件返回文件信息,没有上传到oss
try{
//生成文件存储路径
$filePath = $data['save_dir'] . '/' . date('Y-m-d', time()) . '/';//图片路径
$saveFileName = Strings::generateRandomString(16) . '.' . $data['file_ext'];//图片名称+扩展名
$saveFilePath = $filePath . $saveFileName; //路径+图片名称
$tmp_name = $this->file->getRealPath();//上传的文件缓存在tmp文件夹下的绝对路径
//文件存储到第三方
$config = config('params.oss.img-meng');//请查看'//github.com/majiameng/uploads'配置
$drive = Upload::oss($config);//上传到阿里云oss
//$drive = Upload::qiniu($config);//上传到七牛云
$result = $drive->uploadFile($saveFilePath, $tmp_name );//file上传文件
if($result === true){
return $saveFilePath;
}
return false;
}catch (\Exception $exception){
CommonReturn::fail(StatusCode::COMMON_CAPTCHA_INVALID,$exception->getMessage());
}
}