请选择 进入手机版 | 继续访问电脑版
绿茶科技社区

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
这篇文章主要介绍了Symfony2使用第三方库Upload制作图片上传的方法,结合实例形式较为详细的分析了Symfony2使用第三方库Upload的具体步骤与相关使用技巧,需要的朋友可以参考下
本文实例分析了Symfony2使用第三方库Upload制作图片上传的方法。分享给大家供大家参考,具体如下:
我们在应用程序或者网站的个人资料里一般都有设置头像的功能,这一章我们在Symfony2里用第三方的一个比较有名Upload库来制作上传图片的功能。
一、安装第三方库
1.在composer.json文件中的”require”中加入
  1. "codeguy/upload": "*"
复制代码

2.运行指令安装
  1. composer update
复制代码
二、编码

1.编写uploadPic方法上传图片,并将上传图片的用户id作为文件名
  1. <?php
  2. /**
  3. * @author Sun
  4. * By blogs.zmit.cn http://blogs.zmit.cn
  5. * 原创作品,允许转载,转载时请务必以超链接形式标明文章原始出处 http://blogs.zmit.cn/6544.html
  6. * 中梦博客,作者信息和本声明。否则将追究法律责任。
  7. */
  8. namespace ZM\AdminBundle\Controller;
  9. use Symfony\Bundle\FrameworkBundle\Controller\Controller;
  10. use Symfony\Component\Filesystem\Filesystem;
  11. class DefaultController extends Controller {
  12.   public function indexAction($name) {
  13.     return $this->render('ZMAdminBundle:Default:index.html.twig', array('name' => $name));
  14.   }
  15.   /**
  16.    * 上传图片
  17.    *
  18.    * @param type $user_id 用户的id,用作文件名
  19.    * @param type $str   表单中file类型的input的name
  20.    * @param type $path  保存路径
  21.    * @return type
  22.    */
  23.   public function uploadPic($user_id, $str, $path) {
  24.     $fs = new Filesystem();
  25.     //检查路径是否存在
  26.     if (!$fs->exists($path)) {
  27.       //如果不存在,创建目录
  28.       $fs->mkdir($path, 0700);
  29.     }
  30.     //使用Upload库
  31.     $storage = new \Upload\Storage\FileSystem($path);
  32.     $file = new \Upload\File($str, $storage);
  33.     //如果文件名为空
  34.     if ($file->getName() != '') {
  35.       //设置文件名为用户的id
  36.       $file->setName($user_id);
  37.       //验证文件上传
  38.       $file->addValidations(array(
  39.         //指定文件类型
  40.         new \Upload\Validation\Mimetype(array('image/png', 'image/jpg', 'image/jpeg', 'image/gif')),
  41.         //指定文件大小
  42.         new \Upload\Validation\Size('2M')
  43.       ));
  44.       //上传文件
  45.       try {
  46.         //成功
  47.         $file->upload();
  48.         //文件名和扩展名
  49.         $file_name = $file->getNameWithExtension();
  50.       } catch (\Exception $e) {
  51.         //失败!
  52.         $errors = $file->getErrors();
  53.       }
  54.     }
  55.     //返回文件名和扩展名
  56.     return $file_name;
  57.   }
  58. }
复制代码
2.用户上传头像,并将头像全路径存入数据库表
  1. <?php
  2. /**
  3. * 联系人控制器
  4. * @author Sun
  5. * By blogs.zmit.cn http://blogs.zmit.cn
  6. * 原创作品,允许转载,转载时请务必以超链接形式标明文章原始出处 http://blogs.zmit.cn/6544.html
  7. * 中梦博客,作者信息和本声明。否则将追究法律责任。
  8. */
  9. namespace ZM\ApiBundle\Controller;
  10. //引用写好的上传图片方法uploadPic的Controller,并命名为BaseController
  11. use ZM\AdminBundle\Controller\DefaultController AS BaseController;
  12. use Symfony\Component\HttpFoundation\Request;
  13. use Symfony\Component\HttpFoundation\Response;
  14. //继承BaseController
  15. class ContactController extends BaseController {
  16.   /**
  17.    * 用户上传头像
  18.    *
  19.    * @return Response
  20.    */
  21.   public function uploadHeadAction() {
  22.     $request = Request::createFromGlobals()->request;
  23.     $user_id = $request->get('user_id');
  24.     //判断是否有文件上传
  25.     if (isset($_FILES['head']) && $_FILES['head'] != '') {
  26.       $conn = $this->getDoctrine()->getConnection();
  27.       $data = $conn->fetchAssoc("SELECT id, head FROM contact WHERE id = ? LIMIT 1", array($user_id));
  28.       //判断用户是否存在
  29.       if(!empty($data['id'])) {
  30.         //设置图片保存路径
  31.         $path = 'image/head/';
  32.         //获取上传文件后返回的文件名和扩展名
  33.         $file_name = $this->uploadPic($user_id, 'head', $path);
  34.         //修改用户contact表head头像字段的值
  35.         $conn->executeUpdate("UPDATE contact SET head = ? WHERE id = ?", array($path . $file_name, $user_id));
  36.         $result['flag'] = 1;
  37.         $result['content'] = '上传头像成功!';
  38.       } else {
  39.         $result['flag'] = 3;
  40.         $result['content'] = '用户不存在!';
  41.       }
  42.     }else{
  43.       $result['flag'] = 2;
  44.       $result['content'] = '上传失败,没有选择图片!';
  45.     }
  46.     return new Response(json_encode($result), '200', array('Content-Type' => 'application/json'));
  47.   }
  48. }
复制代码
这样图片就上传成功,将用户的id作为文件名,并修改表字段值为图片的全路径

本文永久地址:http://blog.it985.com/6544.html
本文出自 IT985博客 ,转载时请注明出处及相应链接。

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



分享到 :
0 人收藏

3 个回复

倒序浏览
一是二  高级会员 | 2019-1-16 11:01:39
顶起出售广告位
Teddys Knowledg  高级会员 | 2019-1-20 23:26:44
打酱油的人拉,回复下赚取积分
北岛函  高级会员 | 2019-2-14 17:07:13
我也来顶一下..
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

举报|Archiver|手机版|小黑屋|Lvchakeji Inc.  

Powered by Discuz! X3.3 © 2001-2016 Comsenz Inc.

返回顶部