laravel 实现七牛云对象存储与文件上传总结

1、安装配置

composer require zgldh/qiniu-laravel-storage

在 config下的app.php 加上

zgldh\QiniuStorage\QiniuFilesystemServiceProvider::class

接着

接下来在config/filesystems.php里的disks中新增如下选项:

'disks' => [
        ... ,
        'qiniu' => [
            'driver'  => 'qiniu',
            'domains' => [
                'default'   => 'laravelacademy.com1.z0.glb.clouddn.com', //你的七牛域名
                'https'     => 'dn-laravelacademy.qbox.me',         //你的HTTPS域名
                'custom'    => 'static.laravelacademy.org',     //你的自定义域名
             ],
            'access_key'=> '',  //AccessKey
            'secret_key'=> '',  //SecretKey
            'bucket'    => '',  //Bucket名字
            'notify_url'=> '',  //持久化处理回调地址
        ],
    ],

然后

实例:

           $disk = \Storage::disk('qiniu'); //使用七牛云上传
    $time = date('Y/m/d/H-m-s');


    $file     = $Request->file('file');


    $filePath = $file->getRealPath();
    $ext = $file->getClientOriginalExtension();
    $filename = $disk->put($time.'.'.$ext, file_get_contents($filePath));//上传
  
    if(!$filename) {
return redirect()->route('center.updinfo')
                        ->with('success', '文件错误');
    }

就是如此简单

实现过程中的坑

实现上传图片时,我们要传一个参数

文件路径 

路径后面必须带文件扩展名,不然七牛云无法识别文件类型,进而文件上传成功后,文件也无法展示


文件上传总结

第一总报错

php.ini 的扩展

可能是没设置临时文件路径

可能图片太大,等等扩展性问题

第二种

权限问题

父级只有读取权限没有写入权限,那它的子级文件夹就无法添加文件了

第三种  form 表单 enctype=multipart/form-data

表单中如果不加这个就会导致你接收不到文件的详细信息

文件上传后会有个错误码,0是成功,。。。。一直到6,实现不知错在哪儿了,可以看看状态码

上传生成的临时文件好像是2进制生成的,所以不要妄图打印,会乱码,上传成功后,临时文件会自动删除




你可能感兴趣的:(laravel,php)