Symfony2使用第三方庫Upload製作圖片上傳執行個體詳解,_PHP教程

來源:互聯網
上載者:User

Symfony2使用第三方庫Upload製作圖片上傳執行個體詳解,


本文執行個體分析了Symfony2使用第三方庫Upload製作圖片上傳的方法。分享給大家供大家參考,具體如下:

我們在應用程式或者網站的設定檔裡一般都有設定頭像的功能,這一章我們在Symfony2裡用第三方的一個比較有名Upload庫來製作上傳圖片的功能。

一、安裝第三方庫

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,並命名為BaseControlleruse ZM\AdminBundle\Controller\DefaultController AS BaseController;use Symfony\Component\HttpFoundation\Request;use Symfony\Component\HttpFoundation\Response;//繼承BaseControllerclass 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
本文出自 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開發之控制器用法執行個體分析

http://www.bkjia.com/PHPjc/1098963.htmlwww.bkjia.comtruehttp://www.bkjia.com/PHPjc/1098963.htmlTechArticleSymfony2使用第三方庫Upload製作圖片上傳執行個體詳解, 本文執行個體分析了Symfony2使用第三方庫Upload製作圖片上傳的方法。分享給大家供大家參考,...

  • 聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.