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製作圖片上傳的方法。分享給大家供大家參考,...