laravel 自带的上传功能
1.文件上传配置
项目目录下面config->filesystems.php,其中有一个disk的配置。
image.png
添加一个自定义的驱动public
,设置文件上传路径,这里设置为storage目录下面的app文件夹:
image.png
2.模板页面
{!! Form::open(['route' => 'order.store', 'class'=>'form-horizontal mt-20', 'enctype' => 'multipart/form-data']) !!} <div class="form-group"> <label class="col-sm-2 control-label label-width">图片:</label> <div class="col-sm-10"> <input type="file" name="picture" id="picture" required="true"> </div></div><div class="form-group"> <label class="col-sm-2 control-label label-width"></label> <div class="col-sm-10 mb-15"> <button type="submit" class="btn btn-primary">提交</button> </div> </div> {!! Form::close() !!}
2.在OrderController控制器里面
使用命名空间
use App\Models\Order;use Illuminate\Support\Facades\Storage;
store 方法中对上传文件进行处理
public functiuon store(REQUEST $request) { $data = $request->all(); $picture = $request->file('picture'); if ($picture->isValid()) { $ext = $picture->getClientOriginalExtension(); $path = $picture->getRealPath(); $filename = 'data/upload/'.time().mt_rand(999, 9999).'.'.$ext; //文件路径,存入数据库 Storage::disk('public')->put($filename, file_get_contents($path)); } $data['picture'] = $filename; Order::create($data); }