목차
Symfony2使用第三方库Upload制作图片上传实例详解,
您可能感兴趣的文章:
php教程 php手册 Symfony2使用第三方库Upload制作图片上传实例详解,

Symfony2使用第三方库Upload制作图片上传实例详解,

Jun 13, 2016 am 08:46 AM
이미지 업로드

Symfony2使用第三方库Upload制作图片上传实例详解,

本文实例分析了Symfony2使用第三方库Upload制作图片上传的方法。分享给大家供大家参考,具体如下:

我们在应用程序或者网站的个人资料里一般都有设置头像的功能,这一章我们在Symfony2里用第三方的一个比较有名Upload库来制作上传图片的功能。

一、安装第三方库

1.在composer.json文件中的”require”中加入

1

"codeguy/upload": "*"

로그인 후 복사

2.运行指令安装

1

composer update

로그인 후 복사

二、编码

1.编写uploadPic方法上传图片,并将上传图片的用户id作为文件名

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

<&#63;php

/**

 * @author Sun

 * By blogs.zmit.cn http://blogs.zmit.cn

 * 原创作品,允许转载,转载时请务必以超链接形式标明文章原始出处 http://blogs.zmit.cn/6544.html

 * 中梦博客,作者信息和本声明。否则将追究法律责任。

 */

namespace ZM\AdminBundle\Controller;

use Symfony\Bundle\FrameworkBundle\Controller\Controller;

use Symfony\Component\Filesystem\Filesystem;

class DefaultController extends Controller {

  public function indexAction($name) {

    return $this->render('ZMAdminBundle:Default:index.html.twig', array('name' => $name));

  }

  /**

   * 上传图片

   *

   * @param type $user_id 用户的id,用作文件名

   * @param type $str   表单中file类型的input的name

   * @param type $path  保存路径

   * @return type

   */

  public function uploadPic($user_id, $str, $path) {

    $fs = new Filesystem();

    //检查路径是否存在

    if (!$fs->exists($path)) {

      //如果不存在,创建目录

      $fs->mkdir($path, 0700);

    }

    //使用Upload库

    $storage = new \Upload\Storage\FileSystem($path);

    $file = new \Upload\File($str, $storage);

    //如果文件名为空

    if ($file->getName() != '') {

      //设置文件名为用户的id

      $file->setName($user_id);

      //验证文件上传

      $file->addValidations(array(

        //指定文件类型

        new \Upload\Validation\Mimetype(array('image/png', 'image/jpg', 'image/jpeg', 'image/gif')),

        //指定文件大小

        new \Upload\Validation\Size('2M')

      ));

      //上传文件

      try {

        //成功

        $file->upload();

        //文件名和扩展名

        $file_name = $file->getNameWithExtension();

      } catch (\Exception $e) {

        //失败!

        $errors = $file->getErrors();

      }

    }

    //返回文件名和扩展名

    return $file_name;

  }

}

로그인 후 복사

2.用户上传头像,并将头像全路径存入数据库表

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

<&#63;php

/**

 * 联系人控制器

 * @author Sun

 * By blogs.zmit.cn http://blogs.zmit.cn

 * 原创作品,允许转载,转载时请务必以超链接形式标明文章原始出处 http://blogs.zmit.cn/6544.html

 * 中梦博客,作者信息和本声明。否则将追究法律责任。

 */

namespace ZM\ApiBundle\Controller;

//引用写好的上传图片方法uploadPic的Controller,并命名为BaseController

use ZM\AdminBundle\Controller\DefaultController AS BaseController;

use Symfony\Component\HttpFoundation\Request;

use Symfony\Component\HttpFoundation\Response;

//继承BaseController

class ContactController extends BaseController {

  /**

   * 用户上传头像

   *

   * @return Response

   */

  public function uploadHeadAction() {

    $request = Request::createFromGlobals()->request;

    $user_id = $request->get('user_id');

    //判断是否有文件上传

    if (isset($_FILES['head']) && $_FILES['head'] != '') {

      $conn = $this->getDoctrine()->getConnection();

      $data = $conn->fetchAssoc("SELECT id, head FROM contact WHERE id = &#63; LIMIT 1", array($user_id));

      //判断用户是否存在

      if(!empty($data['id'])) {

        //设置图片保存路径

        $path = 'image/head/';

        //获取上传文件后返回的文件名和扩展名

        $file_name = $this->uploadPic($user_id, 'head', $path);

        //修改用户contact表head头像字段的值

        $conn->executeUpdate("UPDATE contact SET head = &#63; WHERE id = &#63;", array($path . $file_name, $user_id));

        $result['flag'] = 1;

        $result['content'] = '上传头像成功!';

      } else {

        $result['flag'] = 3;

        $result['content'] = '用户不存在!';

      }

    }else{

      $result['flag'] = 2;

      $result['content'] = '上传失败,没有选择图片!';

    }

    return new Response(json_encode($result), '200', array('Content-Type' => 'application/json'));

  }

}

로그인 후 복사

这样图片就上传成功,将用户的id作为文件名,并修改表字段值为图片的全路径

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

更多关于PHP框架相关内容感兴趣的读者可查看本站专题:《php优秀开发框架总结》,《codeigniter入门教程》,《CI(CodeIgniter)框架进阶教程》,《Yii框架入门及常用技巧总结》及《ThinkPHP入门教程》

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

您可能感兴趣的文章:

  • Symfony2实现在doctrine中内置数据的方法
  • Symfony2安装第三方Bundles实例详解
  • Symfony2在Nginx下的配置方法图文教程
  • Symfony2安装的方法(2种方法)
  • Symfony2 session用法实例分析
  • 高性能PHP框架Symfony2经典入门教程
  • Symfony学习十分钟入门经典教程
  • Symfony数据校验方法实例分析
  • symfony表单与页面实现技巧
  • Symfony2开发之控制器用法实例分析
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.

뜨거운 기사 태그

메모장++7.3.1

메모장++7.3.1

사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전

SublimeText3 중국어 버전

중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기

스튜디오 13.0.1 보내기

강력한 PHP 통합 개발 환경

드림위버 CS6

드림위버 CS6

시각적 웹 개발 도구

SublimeText3 Mac 버전

SublimeText3 Mac 버전

신 수준의 코드 편집 소프트웨어(SublimeText3)

CakePHP 프레임워크를 사용하여 이미지 업로드 및 표시를 구현하는 단계 CakePHP 프레임워크를 사용하여 이미지 업로드 및 표시를 구현하는 단계 Jul 29, 2023 pm 04:21 PM

CakePHP 프레임워크를 사용하여 이미지 업로드 및 표시를 구현하는 단계

WeChat 애플릿은 사진 업로드 기능을 구현합니다. WeChat 애플릿은 사진 업로드 기능을 구현합니다. Nov 21, 2023 am 09:08 AM

WeChat 애플릿은 사진 업로드 기능을 구현합니다.

PHP와 Vue를 사용하여 이미지 업로드 기능을 구현하는 방법 PHP와 Vue를 사용하여 이미지 업로드 기능을 구현하는 방법 Sep 25, 2023 pm 03:17 PM

PHP와 Vue를 사용하여 이미지 업로드 기능을 구현하는 방법

Vue 기술 개발에서 이미지 업로드 및 압축을 처리하는 방법 Vue 기술 개발에서 이미지 업로드 및 압축을 처리하는 방법 Oct 08, 2023 am 10:58 AM

Vue 기술 개발에서 이미지 업로드 및 압축을 처리하는 방법

Vue 개발 중 발생하는 이미지 업로드 및 자르기 문제 Vue 개발 중 발생하는 이미지 업로드 및 자르기 문제 Oct 08, 2023 pm 04:12 PM

Vue 개발 중 발생하는 이미지 업로드 및 자르기 문제

ThinkPHP6을 사용하여 이미지를 업로드하는 방법 ThinkPHP6을 사용하여 이미지를 업로드하는 방법 Jun 20, 2023 pm 09:25 PM

ThinkPHP6을 사용하여 이미지를 업로드하는 방법

Vue 기술 개발에서 이미지 업로드 및 자르기를 구현하는 방법 Vue 기술 개발에서 이미지 업로드 및 자르기를 구현하는 방법 Oct 10, 2023 pm 12:46 PM

Vue 기술 개발에서 이미지 업로드 및 자르기를 구현하는 방법

Vue 개발 시 이미지 업로드 미리보기 모달 상자 표시 문제를 해결하는 방법 Vue 개발 시 이미지 업로드 미리보기 모달 상자 표시 문제를 해결하는 방법 Jul 01, 2023 pm 01:13 PM

Vue 개발 시 이미지 업로드 미리보기 모달 상자 표시 문제를 해결하는 방법

See all articles