参考:https://xueyuanjun.com/post/9642.html
其他参考代码一:
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Http\Controllers\Controller;
use Illuminate\Support\Facades\Storage;
class UploadController extends Controller {
/**
* 展示文件上传表单页面
*/
public function index() {
return view("test");
}
/**
* 文件上传
*/
public function uploadFile(Request $request) {
$file = $request->file('img');
// 此时 $this->upload如果成功就返回文件名不成功返回false
$fileName = $this->upload($file);
if ($fileName){
return $fileName;
}
return '上传失败';
}
/**
* 验证文件是否合法
*/
public function upload($file, $disk='public') {
// 1.是否上传成功
if (! $file->isValid()) {
return false;
}
// 2.是否符合文件类型 getClientOriginalExtension 获得文件后缀名
$fileExtension = $file->getClientOriginalExtension();
if(! in_array($fileExtension, ['png', 'jpg', 'gif'])) {
return false;
}
// 3.判断大小是否符合 2M
$tmpFile = $file->getRealPath();
if (filesize($tmpFile) >= 2048000) {
return false;
}
// 4.是否是通过http请求表单提交的文件
if (! is_uploaded_file($tmpFile)) {
return false;
}
// 5.每天一个文件夹,分开存储, 生成一个随机文件名
$fileName = date('Y_m_d').'/'.md5(time()) .mt_rand(0,9999).'.'. $fileExtension;
if (Storage::disk($disk)->put($fileName, file_get_contents($tmpFile)) ){
return Storage::url($fileName);
}
}
}
其他参考代码二:
//判断文件内容
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);
}