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,并命名为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
本文出自 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开发之控制器用法实例分析

Thesecrettokeepingaphp-betriebene WebsiterunningSmoothyunderheavyLoadInvolvesseveralkeyStrategies: 1) ImplementoPCodeCachingWithopcachetoreducescholexexexcutiontime, 2) verwendetatabasequerycachingwithredolesendatabaSelaDaLoadaLoadaLoadaLoad, 3) LeveragecdnslikecloudLesendatabaselaSelaSelaSelaSelaSelaSelaSelaSelaSelaSeladinaSelaSelaSelaSelaSeladinaSelaSeladin

Sie sollten sich um die Abhängigkeitsinjektion (DI) kümmern, da Ihr Code klarer und leichter zu warten ist. 1) DI macht es modularer durch Entkopplung von Klassen, 2) verbessert die Bequemlichkeit von Tests und Code -Flexibilität, 3) DI -Container verwenden, um komplexe Abhängigkeiten zu verwalten, aber auf die Auswirkungen auf die Leistung und die kreisförmigen Abhängigkeiten zu achten, 4) Die beste Praxis besteht darin, sich auf abstrakte Schnittstellen zu verlassen, um lose Koupleln zu erreichen.

Ja, optimizingaphpapplicationSispossiblandinential.1) ImplementCachingusedapcutoredatabaSeload.2) optimizedatabases-withindexing, effizienteQuerien und AnconnectionPooling.3) EnhanceCodewithbuilt-Infunktionen, Vermeidung von Globalvariablungen und UsusepcodeCodeCecess

TheKeyStrategieS significantBoostPhpapplicationPlicationperformanceare: 1) UseOpCodeCaching-likeopcachetoreduceExecutiontime, 2) optimizedatabaseInteractionswithprepararedStatements undProperIndexing, 3) configureWebserverSLIKENGINXWITHPHP-FPMFRMFRETBETTERPERSPRIGUNG, 4), 4), 4), 4), 4))

APHPDependencyInjectionContainerisatoolthatmanagesClass -Abhängigkeiten, EnhancingCodemodularität, Testbarkeit und Maschinenbarkeit.

Wählen Sie die Abhängigkeitsinjektion (DI) für große Anwendungen. Der Servicelocator ist für kleine Projekte oder Prototypen geeignet. 1) DI verbessert die Testbarkeit und Modularität des Codes durch Konstruktorinjektion. 2) Servicelocator erhält Dienstleistungen durch die Zentrumregistrierung, was bequem ist, aber zu einer Erhöhung der Codekupplung führen kann.

PhpapplicationscanbeoptimizedforspeedandefficiencyBy: 1) EnabgingOpcacheinphp.ini, 2) usePreparedStatementsWithpdoFordatabasequeries, 3) Ersatzloopswitharray_Filterandarray_mapfordataprozessing, 4) Konfigurieren von), 4), implementieren, 5)

PhpemailvalidationInvolvesthreesteps: 1) Formatvalidationusing -RegularexpressionStocheckTheemailformat; 2) DnsvalidationToensurethedomainhasavalidmxRecord;


Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

Video Face Swap
Tauschen Sie Gesichter in jedem Video mühelos mit unserem völlig kostenlosen KI-Gesichtstausch-Tool aus!

Heißer Artikel

Heiße Werkzeuge

VSCode Windows 64-Bit-Download
Ein kostenloser und leistungsstarker IDE-Editor von Microsoft

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SecLists
SecLists ist der ultimative Begleiter für Sicherheitstester. Dabei handelt es sich um eine Sammlung verschiedener Arten von Listen, die häufig bei Sicherheitsbewertungen verwendet werden, an einem Ort. SecLists trägt dazu bei, Sicherheitstests effizienter und produktiver zu gestalten, indem es bequem alle Listen bereitstellt, die ein Sicherheitstester benötigen könnte. Zu den Listentypen gehören Benutzernamen, Passwörter, URLs, Fuzzing-Payloads, Muster für vertrauliche Daten, Web-Shells und mehr. Der Tester kann dieses Repository einfach auf einen neuen Testcomputer übertragen und hat dann Zugriff auf alle Arten von Listen, die er benötigt.

PHPStorm Mac-Version
Das neueste (2018.2.1) professionelle, integrierte PHP-Entwicklungstool

EditPlus chinesische Crack-Version
Geringe Größe, Syntaxhervorhebung, unterstützt keine Code-Eingabeaufforderungsfunktion
