经验首页 前端设计 程序设计 Java相关 移动开发 数据库/运维 软件/图像 大数据/云计算 其他经验
当前位置:技术经验 » 程序设计 » PHP » 查看文章
Laravel框架实现的上传图片到七牛功能详解
来源:jb51  时间:2019/9/10 10:26:32  对本文有异议

本文实例讲述了Laravel框架实现的上传图片到七牛功能。分享给大家供大家参考,具体如下:

新建项目

这里直接用一个新的Laravel5.3的项目进行演示,其他版本都是一样不会影响功能,顶多是路由位置不一样而已。已有项目的小伙伴可直接跳过次段。

  1. # 新建项目
  2. laravel new laravel-qiniu
  3. cd laravel-qiniu
  4.  

安装Laravel七牛扩展包

过Composer安装:

  1. composer require zgldh/qiniu-laravel-storage
  2.  

然后在 config/app.php 中注册服务提供者:

  1. zgldh\QiniuStorage\QiniuFilesystemServiceProvider::class
  2.  

接下来在 config/filesystems.php 里的disks中新增七牛配置:

  1. 'qiniu' => [
  2. 'driver' => 'qiniu',
  3. 'domains' => [
  4. 'default' => 'xxxxx', //你的七牛域名
  5. 'https' => 'xxxxx', //你的HTTPS域名
  6. 'custom' => 'xxxxx', //你的自定义域名
  7. ],
  8. 'access_key'=> '', //AccessKey
  9. 'secret_key'=> '', //SecretKey
  10. 'bucket' => '', //Bucket名字
  11. 'notify_url'=> '', //持久化处理回调地址
  12. ],
  13.  

OK,扩展包的安装就暂时介绍到这里,接下来我们要去七牛注册一个账号并且将上面的配置完善。

七牛账号注册及配置

先去七牛注册一个账号,点击官网的注册会让我们选择用户类型,这里我就选择个人用户。

接下来按照流程来进项注册就OK了,我就不演示给大家看了。由于我的手机号已经注册了,这里只能给大家看一下我已经添加了存储对象的实例了。

OK ,简单的用图给大家看一下七牛的默认域名及自定义域名在哪里看。下面给大家看一下七牛的秘钥的位置:

点击秘钥管理,就可与看到个人七牛的秘钥了:

七牛在Laravel中的配置

上面已经介绍相关的配置在哪儿,现在我们要将这些配置在Laravel中使用:

上传图片到七牛

简单用一个示例来演示前端上传图片到后台后,用七牛的扩展上传图片

先在 resources\views 下新建 index.blade.php 视图

  1. <!DOCTYPE html>
  2. <html>
  3. <head>
  4. <title>上传图片</title>
  5. </head>
  6. <body>
  7. <form method="post" action="" enctype="multipart/form-data">
  8. <input type="file" name="file">
  9. <button type="submit">上传图片</button>
  10. </form>
  11. </body>
  12. </html>
  13.  

页面代码简单,没有任何样式(请原谅我偷懒),新建 UplaodController 上传文件控制器:

  1. php artisan make:controller UploadController
  2.  

实现上传方法:

  1. <?php
  2. namespace App\Http\Controllers;
  3. use Illuminate\Http\Request;
  4. use zgldh\QiniuStorage\QiniuStorage;
  5. class UploadController extends Controller
  6. {
  7. /**
  8. * 上传文件到七牛
  9. * @author 高伟
  10. * @date 2016-11-09T16:58:37+0800
  11. * @param Request $request [description]
  12. * @return [type] [description]
  13. */
  14. public function uploadFile(Request $request)
  15. {
  16. // 判断是否有文件上传
  17. if ($request->hasFile('file')) {
  18. // 获取文件,file对应的是前端表单上传input的name
  19. $file = $request->file('file');
  20. // Laravel5.3中多了一个写法
  21. // $file = $request->file;
  22. // 初始化
  23. $disk = QiniuStorage::disk('qiniu');
  24. // 重命名文件
  25. $fileName = md5($file->getClientOriginalName().time().rand()).'.'.$file->getClientOriginalExtension();
  26. // 上传到七牛
  27. $bool = $disk->put('iwanli/image_'.$fileName,file_get_contents($file->getRealPath()));
  28. // 判断是否上传成功
  29. if ($bool) {
  30. $path = $disk->downloadUrl('iwanli/image_'.$fileName);
  31. return '上传成功,图片url:'.$path;
  32. }
  33. return '上传失败';
  34. }
  35. return '没有文件';
  36. }
  37. }
  38.  

添加路由:

  1. // 上传页面视图
  2. Route::get('/upload',function ()
  3. {
  4. return view('index');
  5. });
  6. // form提交到控制器路由
  7. Route::post('upload','UploadController@uploadFile');
  8.  

视图页面(resources\views\index.blade.php):

  1. <!DOCTYPE html>
  2. <html>
  3. <head>
  4. <title>上传图片</title>
  5. </head>
  6. <body>
  7. <form method="post" action="{{url('upload')}}" enctype="multipart/form-data">
  8. {{csrf_field()}}
  9. <input type="file" name="file">
  10. <button type="submit">上传图片</button>
  11. </form>
  12. </body>
  13. </html>
  14.  

OK,刷新页面就能看到上传后的url地址了。这里只是演示一个最简单的实例,路由定义、视图样式、及逻辑层处理大家按照自己的项目来就行了

更多关于Laravel相关内容感兴趣的读者可查看jb51专题:《Laravel框架入门与进阶教程》、《php优秀开发框架总结》、《php面向对象程序设计入门教程》、《php+mysql数据库操作入门教程》及《php常见数据库操作技巧汇总

希望本文所述对大家基于Laravel框架的PHP程序设计有所帮助。

 友情链接:直通硅谷  点职佳  北美留学生论坛

本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728

W3xue 的所有内容仅供测试,对任何法律问题及风险不承担任何责任。通过使用本站内容随之而来的风险与本站无关。
关于我们  |  意见建议  |  捐助我们  |  报错有奖  |  广告合作、友情链接(目前9元/月)请联系QQ:27243702 沸活量
皖ICP备17017327号-2 皖公网安备34020702000426号