Symfony 2 제3자 라 이브 러 리 Upload 를 사용 하여 사진 업로드 실례 상세 설명

본 고 는 Symfony 2 가 제3자 라 이브 러 리 Upload 를 사용 하여 사진 을 만들어 업로드 하 는 방법 을 실례 적 으로 분석 하 였 다.여러분 께 참고 하도록 공유 하 겠 습 니 다.구체 적 으로 는 다음 과 같 습 니 다.
저 희 는 응용 프로그램 이나 사이트 의 개인 정보 에 프로필 사진 을 설정 하 는 기능 이 있 습 니 다.이 장 에서 저 희 는 Symfony 2 에서 제3자 의 비교적 유명한 Upload 라 이브 러 리 로 사진 을 올 리 는 기능 을 만 듭 니 다.
1.제3자 라 이브 러 리 설치
1.composer.json 파일 의"require"에 추가

"codeguy/upload": "*"


2.실행 명령 설치

composer update

부호화
1.uploadPic 방법 을 작성 하여 그림 을 업로드 하고,업로드 한 사용자 id 를 파일 이름 으로 합 니 다

<?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.사용자 가 프로필 사진 을 업로드 하고 프로필 사진 의 전체 경 로 를 데이터베이스 시트 에 저장 합 니 다.

<?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 = ? 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 = ? WHERE id = ?", 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
본 고 는 IT 985 블 로그 에서 나 온 것 으로 전재 할 때 출처 와 해당 하 는 링크 를 밝 혀 주 십시오.
더 많은 PHP 프레임 워 크 와 관련 된 내용 에 관심 이 있 는 독 자 는 본 사이트 의 주 제 를 볼 수 있 습 니 다.,,,,,,,,,,등 을 볼 수 있 습 니 다.
본 고 는 Symforny 프레임 워 크 를 바탕 으로 하 는 PHP 프로 그래 밍 에 도움 이 되 기 를 바 랍 니 다.

좋은 웹페이지 즐겨찾기