Symfony 上传图片教程
介绍:
我使用的Bundle:
"vich/uploader-bundle": "^1.4";
"liip/imagine-bundle": "^1.7" 配置:
1)首先需使用composer加载这两个Bundle,
2)注册:
new Vich\UploaderBundle\VichUploaderBundle(),
new Liip\ImagineBundle\LiipImagineBundle()
3)配置路由
_liip_imagine:
resource: "@LiipImagineBundle/Resources/config/routing.xml" 4)配置config
配置VichUploaderBundle
vich_uploader:
db_driver: orm # or mongodb or propel or phpcr
mappings:
#实体中要配置的(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
配置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 }
5)写上传服务:
<?php namespace AppBundle\Service; use Vich\UploaderBundle\Naming\DirectoryNamerInterface;
use Vich\UploaderBundle\Mapping\PropertyMapping; 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里配置
services:
app.vich.directory.namer:
class: AppBundle\Service\VichDirectoryNamer
其中app.vich.directory.namer:就是刚才config中的自己写的服务名称 如果这里看不明白可以加我微信或者加SymfonyQQ群询问
微信号:WhenDreams 回复消息"Symfony上传图片" ;QQ群:182983780 6)写实体属性
/**
* @var string
*
* @ORM\Column(name="filename", type="string", length=255)
*/
private $filename; /**
* @var string
*
* @Vich\UploadableField(mapping="dream_post", fileNameProperty="filename")
*/
private $attach; public function setAttach($attach){
$this->attach = $attach; if ($attach) {
$this->created = new \DateTime('now');
} return $this;
} public function getAttach(){
return $this->attach;
} 7)表单配置
->add('attach', FileType::class, [
'label' => '上传',
'required' => $options['data']->getId() == null
]);
8)页面显示:
<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>
=================================
如果需要全部代码关注我微信号whenDreams回复"Symfony上传图片",
或者加QQ群:182983780![]()

这是我的微信号
Symfony 上传图片教程的更多相关文章
- tinyshop框架教程已在腾讯课堂开课
php就业网简介:www.php91.net,专注于Thinkphp框架教程的php框架学习中心.同时也有小崔老师自学php的教程,与你一起成长哦 同时,php就业网教程部分:http://www.p ...
- symfony 安装使用(一)
Symfony安装教程网上已经存在很多了,但是这里还是要写一下: 1.symfony 安装有以下几种,对应不同的环境 1.1通过composer 命令安装 composer create-projec ...
- php就业网版本已改版成功
php就业网简介:www.php91.net,专注于Thinkphp框架教程的php框架学习中心.同时也有小崔老师自学php的教程,与你一起成长哦 同时,php就业网教程部分:http://www.p ...
- 2013年最流行的php框架盘点
2013年最流行的php框架盘点 PHP框架的发展背景 毫无疑问,Web框架技术在近几年已经得到了突飞猛进的发展和普及,在过去几年里,框架技术的普遍经历了比较大的完善过程,很大一部分可以归因于Ruby ...
- express实现前后端通信上传图片,存储数据库(mysql)傻瓜教程(三)完结篇
终于完成了所有自己想要的功能(鼓励下自己),虽然还是很简陋,但是还是挺有满足感的,哈哈. 附上前两篇的链接: 第一篇 第二篇 进入正题,在第二篇里面已经完成了连接数据库,并且实现了对数据库的增删改查, ...
- 无废话ExtJs 入门教程十三[上传图片:File]
无废话ExtJs 入门教程十三[上传图片:File] extjs技术交流,欢迎加群(201926085) 1.代码如下: 1 <!DOCTYPE html PUBLIC "-//W3C ...
- Symfony 框架实战教程——第一天:创建项目(转)
这个系列的实战博客真是太有用了,很多例子自己调试也是通的,不同于很多网上不同的实战例子...附上原文地址 https://www.chrisyue.com/symfony-in-action-day ...
- 如何使用PHP上传文件,上传图片,php上传教程,php表单文件上传教程
使用PHP进行文件上传,主要使用到表单功能和PHP内置的$_FILES函数功能.接下来我们看如何实现PHP上传功能.例子效果图,此例子是在Mac下进行调试成功的. PHP上传图片文件的功能代码如下: ...
- 《Symfony 5全面开发》教程05、http请求的query参数
首先我们删除上节课所下的断点,在Phpstorm底部我们打开debug选项卡.点击这个按钮展开所有的PHP断点,选中之后点击这个删除,然后我们关闭xdebug监听. 回到浏览器刷新页面,当我们的浏览器 ...
随机推荐
- Angular 学习笔记——$interpolate
<!DOCTYPE HTML> <html ng-app="myApp"> <head> <meta http-equiv="C ...
- 倍福TwinCAT(贝福Beckhoff)基础教程 松下伺服驱动器报错 21.0怎么办
编码器通讯断线异常保护,一般就是通讯线松动或者受干扰(最难以排查的情况是,我接了六套驱动器和伺服,比如J0的线是随便做的,其他五套都是西门子的合格网线,我运行程序的时候,J0如果单关节运动没任何问题, ...
- react-native 常用组件的用法(一)
1.View组件 View是一个支持Flexbox布局.样式.一些触摸处理.和一些无障碍功能的容器,并且它可以放到其它的视图里,也可以有任意多个任意类型的子视图. View的设计初衷是和StyleSh ...
- python第一个web程序
例一: import web urls= ('/(.*)','index') app= web.application(urls,globals()) class index: def GET(sel ...
- LeetCode题目:Permutations
题目:Given a collection of distinct numbers, return all possible permutations. 大意:全排列给定数组,其中给定数组中没有相同的 ...
- python单元测试框架 pyunit
概况 系统要求 使用PyUnit构建自己的测试 安装 测试用例介绍 创建一个简单测试用例 复用设置代码:创建固件 包含多个测试方法的测试用例类 将测试用例聚合成测试套件 嵌套测试用例 测试代码的放置位 ...
- cmd命令速查手册
CMD命令速查手册ASSOC显示或修改文件扩展名关联AT 计划在计算机上运行的命令和程序ATTRIB 显示或更改文件属性BREAK 设置或清除扩展式 CTRL+C检查CACLS显示或修改文件的访问控制 ...
- 第八章 委托,lamdbda 表达式和事件
第八章 委托,lamdbda 表达式和事件 委托是寻址方式的.net版本. 委托是类型安全的类,它定义了返回类型和参数的类型.委托类不仅包含方法的应用,也可以包含对多个方法的引用. 在 C++中,函数 ...
- EasyNetQ操作RabbitMQ(高级消息队列)
RabbitMQ是实现了高级消息队列协议(AMQP)的开源消息代理软件(亦称面向消息的中间件).写消息队列的时候用RabbitMQ比较好,但是写的时候需要自己封装下,自己的封装,就需要对RabbitM ...
- NHibernate 映射基础(第三篇) 简单映射、联合主键
NHibernate 映射基础(第三篇) 简单映射.联合主键 NHibernate完全靠配置文件获取其所需的一切信息,其中映射文件,是其获取数据库与C#程序关系的所有信息来源. 一.简单映射 下面先来 ...