1. 介绍:
    我使用的Bundle:
    "vich/uploader-bundle": "^1.4";
  1. "liip/imagine-bundle": "^1.7"
  2.  
  3. 配置:
    1)首先需使用composer加载这两个Bundle,
    2)注册:
    new Vich\UploaderBundle\VichUploaderBundle(),
    new Liip\ImagineBundle\LiipImagineBundle()
    3)配置路由
  1. _liip_imagine:
    resource: "@LiipImagineBundle/Resources/config/routing.xml"
  2.  
  3. 4)配置config
    配置VichUploaderBundle
  1. vich_uploader:
    db_driver: orm # or mongodb or propel or phpcr
    mappings:
  1. #实体中要配置的(mapping="dream_post");dream_post是个名称而已需要对应;
    dream_post:
    #这里是配置文件存储目录会存储在web/attach/artice下
    uri_prefix: /attach/article  
    upload_destination: "%kernel.root_dir%/../web/attach/article"
    #vich_uploader里的服务名称
    namer: vich_uploader.namer_uniqid
    # 你自己写的服务名称app.vich.directory.namer是我写的一个服务
    directory_namer: app.vich.directory.namer
    inject_on_load: false
    delete_on_update: true
    delete_on_remove: true
    dream_attach:
    uri_prefix: /attach/attach
    upload_destination: "%kernel.root_dir%/../data/attach/attach"
    namer: vich_uploader.namer_uniqid
    directory_namer: app.vich.directory.namer
    inject_on_load: false
    delete_on_update: true
    delete_on_remove: true
  1. 配置LiipImagineBundle
    liip_imagine :
    # configure resolvers
    resolvers :
    # setup the default resolver
    default :
    # use the default web path
    web_path : ~
    # your filter sets are defined here
    filter_sets :
    # use the default cache configuration
    cache : ~
    thumbnail_preview :
    quality : 75
    filters :
    thumbnail : { size : [80, 50], mode : outbound }
  1. 5)写上传服务:
  1. <?php
  2.  
  3. namespace AppBundle\Service;
  4.  
  5. use Vich\UploaderBundle\Naming\DirectoryNamerInterface;
    use Vich\UploaderBundle\Mapping\PropertyMapping;
  6.  
  7. class VichDirectoryNamer implements DirectoryNamerInterface
    {
    /**
    * Creates a directory name for the file being uploaded.
    *
    * @param object $object The object the upload is attached to.
    * @param PropertyMapping $mapping The mapping to use to manipulate the given object.
    *
    * @return string The directory name.
    */
    public function directoryName($object, PropertyMapping $mapping){
    $name = $mapping->getFileName($object);
    $directoryName = "";
    for($i=0;$i<5;$i++){
    $directoryName = $directoryName.substr($name,0,$i+1).'/';
    }
    return $directoryName;
    }
    }
    配置服务
    在本AppBundle里配置
  1. services:
    app.vich.directory.namer:
    class: AppBundle\Service\VichDirectoryNamer
  1. 其中app.vich.directory.namer:就是刚才config中的自己写的服务名称
  2.  
  3. 如果这里看不明白可以加我微信或者加SymfonyQQ群询问
    微信号:WhenDreams 回复消息"Symfony上传图片" ;QQ群:182983780
  4.  
  5. 6)写实体属性
  1. /**
    * @var string
    *
    * @ORM\Column(name="filename", type="string", length=255)
    */
    private $filename;
  2.  
  3. /**
    * @var string
    *
    * @Vich\UploadableField(mapping="dream_post", fileNameProperty="filename")
    */
    private $attach;
  4.  
  5. public function setAttach($attach){
    $this->attach = $attach;
  6.  
  7. if ($attach) {
    $this->created = new \DateTime('now');
    }
  8.  
  9. return $this;
    }
  10.  
  11. public function getAttach(){
    return $this->attach;
    }
  12.  
  13. 7)表单配置
  1. ->add('attach', FileType::class, [
    'label' => '上传',
    'required' => $options['data']->getId() == null
    ]);
  2.  
  3. 8)页面显示:
  1. <th>Image</th>
    <td>
    <a href="{{ vich_uploader_asset(post,'attach')}}" target="_blank">
    <img src="{{ vich_uploader_asset(post,'attach')|imagine_filter('thumbnail_preview')}}" >
    </a>
    </td>
  1. =================================
    如果需要全部代码关注我微信号whenDreams回复"Symfony上传图片",
    或者加QQ群:182983780
  2.  

这是我的微信号

  1.  
  1.  
  1.  
  1.  
  1.  

Symfony 上传图片教程的更多相关文章

  1. tinyshop框架教程已在腾讯课堂开课

    php就业网简介:www.php91.net,专注于Thinkphp框架教程的php框架学习中心.同时也有小崔老师自学php的教程,与你一起成长哦 同时,php就业网教程部分:http://www.p ...

  2. symfony 安装使用(一)

    Symfony安装教程网上已经存在很多了,但是这里还是要写一下: 1.symfony 安装有以下几种,对应不同的环境 1.1通过composer 命令安装 composer create-projec ...

  3. php就业网版本已改版成功

    php就业网简介:www.php91.net,专注于Thinkphp框架教程的php框架学习中心.同时也有小崔老师自学php的教程,与你一起成长哦 同时,php就业网教程部分:http://www.p ...

  4. 2013年最流行的php框架盘点

    2013年最流行的php框架盘点 PHP框架的发展背景 毫无疑问,Web框架技术在近几年已经得到了突飞猛进的发展和普及,在过去几年里,框架技术的普遍经历了比较大的完善过程,很大一部分可以归因于Ruby ...

  5. express实现前后端通信上传图片,存储数据库(mysql)傻瓜教程(三)完结篇

    终于完成了所有自己想要的功能(鼓励下自己),虽然还是很简陋,但是还是挺有满足感的,哈哈. 附上前两篇的链接: 第一篇 第二篇 进入正题,在第二篇里面已经完成了连接数据库,并且实现了对数据库的增删改查, ...

  6. 无废话ExtJs 入门教程十三[上传图片:File]

    无废话ExtJs 入门教程十三[上传图片:File] extjs技术交流,欢迎加群(201926085) 1.代码如下: 1 <!DOCTYPE html PUBLIC "-//W3C ...

  7. Symfony 框架实战教程——第一天:创建项目(转)

    这个系列的实战博客真是太有用了,很多例子自己调试也是通的,不同于很多网上不同的实战例子...附上原文地址  https://www.chrisyue.com/symfony-in-action-day ...

  8. 如何使用PHP上传文件,上传图片,php上传教程,php表单文件上传教程

    使用PHP进行文件上传,主要使用到表单功能和PHP内置的$_FILES函数功能.接下来我们看如何实现PHP上传功能.例子效果图,此例子是在Mac下进行调试成功的. PHP上传图片文件的功能代码如下: ...

  9. 《Symfony 5全面开发》教程05、http请求的query参数

    首先我们删除上节课所下的断点,在Phpstorm底部我们打开debug选项卡.点击这个按钮展开所有的PHP断点,选中之后点击这个删除,然后我们关闭xdebug监听. 回到浏览器刷新页面,当我们的浏览器 ...

随机推荐

  1. java学习笔记——大数据操作类

    java.math包中提供了两个大数字操作类:BigInteger(大整数操作类) BigDecimal(大小数操作类). 大整数操作类:BigInteger BigInteger类构造方法:publ ...

  2. 安装openstack 时 遇见的一些问题及解决方法!

    感谢朋友支持本博客,欢迎共同探讨交流.因为能力和时间有限,错误之处在所难免.欢迎指正! 假设转载.请保留作者信息. 博客地址:http://blog.csdn.net/qq_21398167 原博文地 ...

  3. #淘宝#复制分享宝贝内容,打开淘宝APP,自己主动弹出宝贝提示信息

    场景描写叙述: 淘宝复制连接,分享出去,比方拷贝到QQ好友.微信好友,一个宝贝信息.然后你朋友长按复制你分享它了的这个宝贝.当然打开手机淘宝时.自己主动会跳出宝贝的信息,点击确定能够直接进入宝贝详情 ...

  4. iOS学习笔记之蓝牙(有关蓝牙设备mac地址处理)

    原文: http://blog.sina.com.cn/s/blog_6f2f0bed0102xn0e.html

  5. npm -D -S -g -i 以及安装技巧

    繁杂:npm install webpack 简洁:npm i webpack 重复性操作: npm i webpack npm i babel-core .... 简洁性操作: npm i webp ...

  6. How to check the 'OLE DB Destination' INPUT and OUTPUT

    Step 1: Step 2: Step 3:

  7. C# 中 finally 的用法

    当一个异常抛出时,它会改变程序的执行流程.因此不能保证一个语句结束后,它后面的语句一定会执行,在 C# 中这个问题可以用 finally 解决. 为了确保一个语句总是能执行(不管是否抛出异常),需要将 ...

  8. hdu 4417,poj 2104 划分树(模版)归并树(模版)

    这次是彻底把划分树搞明确了,与此同一时候发现了模版的重要性.敲代码一个字符都不能错啊~~~ 划分树具体解释:点击打开链接 题意:求一组数列中随意区间不大于h的个数. 这个题的做法是用二分查询  求给定 ...

  9. PSSM特征-从生成到处理

    以下代码均为个人原创,如有疑问,欢迎交流.新浪微博:拾毅者 本节内容: pssm生成 pssm简化 标准的pssm构建 滑动pssm生成 在基于蛋白质序列的相关预測中.使用PSSM打分矩阵会得将预測效 ...

  10. 调用bat文件执行java文件

    set path=./jre7/bin--设置jre路径,可以写jre的全路径java -cp "lib/*;" -Xms256m -Xmx512m com.shentong.Ma ...