文件/图片上传

model-form通过以下的调用来生成form元素。

  1. $form->file('file_column');
  2. $form->image('image_column');

修改存储路径或文件名

  1. // 修改上传目录
  2. $form->image('picture')->move('public/upload/image1/');
  3. // 使用随机生成文件名 (md5(uniqid()).extension)
  4. $form->image('picture')->uniqueName();
  5. // 自定义文件名
  6. $form->image('picture')->name(function ($file) {
  7. return 'test.'.$file->guessExtension();
  8. });

model-form支持本地和云存储的文件上传

本地上传

先添加存储配置,config/filesystems.php 添加一项disk:

  1. 'disks' => [
  2. ... ,
  3. 'admin' => [
  4. 'driver' => 'local',
  5. 'root' => public_path('upload'),
  6. 'visibility' => 'public',
  7. ],
  8. ],

设置上传的路径为public/upload(public_path('upload'))。

然后选择上传的disk,打开config/admin.php找到:

  1. 'upload' => [
  2. 'disk' => 'admin',
  3. 'directory' => [
  4. 'image' => 'image',
  5. 'file' => 'file',
  6. ],
  7. 'host' => 'http://localhost:8000/upload/',
  8. ],

disk设置为上面添加的admindirectory.imagedirectory.file分别为用$form->image($column)$form->file($column)上传的图片和文件的上传目录

host为图片和文件的网络访问url前缀。

云盘上传

如果需要上传到云存储,需要安装对应laravel storage的适配器,拿七牛云存储举例

首先安装 zgldh/qiniu-laravel-storage

同样配置好disk,在config/filesystems.php 添加一项:

  1. 'disks' => [
  2. ... ,
  3. 'qiniu' => [
  4. 'driver' => 'qiniu',
  5. 'domains' => [
  6. 'default' => 'xxxxx.com1.z0.glb.clouddn.com', //你的七牛域名
  7. 'https' => 'dn-yourdomain.qbox.me', //你的HTTPS域名
  8. 'custom' => 'static.abc.com', //你的自定义域名
  9. ],
  10. 'access_key'=> '', //AccessKey
  11. 'secret_key'=> '', //SecretKey
  12. 'bucket' => '', //Bucket名字
  13. 'notify_url'=> '', //持久化处理回调地址
  14. ],
  15. ],

然后修改laravel-admin的上传配置,打开config/admin.php找到:

  1. 'upload' => [
  2. 'disk' => 'qiniu',
  3. 'directory' => [
  4. 'image' => 'image',
  5. 'file' => 'file',
  6. ],
  7. 'host' => 'http://of8kfibjo.bkt.clouddn.com/',
  8. ],

disk选择上面配置的qiniuhost配置为七牛云存储的测试域名。