无法上传 png 文件 sonata-media-bundle
png file can't be uploaded sonata-media-bundle
我已经设置好了sonatamediabundle
当我尝试上传 png 文件时,我可以正确上传 jpg 文件。
显示错误。
An error has occurred during the creation of item "n/a".
我的config.yml是这样的。
我想我正确设置了 png 文件配置。
上传png还有别的检查点吗??
sonata_media:
# if you don't use default namespace configuration
#class:
# media: MyVendor\MediaBundle\Entity\Media
# gallery: MyVendor\MediaBundle\Entity\Gallery
# gallery_has_media: MyVendor\MediaBundle\Entity\GalleryHasMedia
default_context: default
db_driver: doctrine_orm # or doctrine_mongodb, doctrine_phpcr
contexts:
default: # the default context is mandatory
providers:
- sonata.media.provider.dailymotion
- sonata.media.provider.youtube
- sonata.media.provider.image
- sonata.media.provider.file
formats:
small: { width: 100 , quality: 70}
big: { width: 500 , quality: 70}
cdn:
server:
path: /myapp/web/uploads/media # Its not good I need to change depending on server...
filesystem:
local:
directory: %kernel.root_dir%/../web/uploads/media
create: false
providers:
image:
service: sonata.media.provider.image
resizer: sonata.media.resizer.simple # sonata.media.resizer.square
filesystem: sonata.media.filesystem.local
cdn: sonata.media.cdn.server
generator: sonata.media.generator.default
thumbnail: sonata.media.thumbnail.format
allowed_extensions: ['jpg', 'png', 'jpeg']
allowed_mime_types: ['image/pjpeg', 'image/jpeg', 'image/png', 'image/x-png']
您必须检查您的表单:configureFormFields()
错误在那里赶上:
// show an error message if the form failed validation
if (!$isFormValid) {
if (!$this->isXmlHttpRequest()) {
$this->addFlash('sonata_flash_error', $this->admin->trans('flash_create_error', array('%name%' => $this->admin->toString($object)), 'SonataAdminBundle'));
}
}
我遇到了同样的问题,但使用的是 JPG。对我来说,gd PHP 的扩展没有配置 JPEG 支持。
如果您想查看您的 gd 扩展程序支持哪些图像格式,请检查 gd_info();
的输出
我正在使用 docker,所以在 Dockerfile 中我必须:
RUN apt-get install -y libpng-dev libjpeg-dev
RUN docker-php-ext-configure gd --with-gd=shared \
--with-jpeg-dir=/usr/lib/x86_64-linux-gnu/
RUN docker-php-ext-install gd
但本质上,请确保安装了必要的库,即 libjpg-dev(或 libpng-dev,具体取决于关于您遇到的问题),使用 --with-jpeg-dir 参数配置 gd 扩展,指向文件夹库已安装(默认是上面 docker 命令中的那个),它应该可以工作。
我已经设置好了sonatamediabundle
当我尝试上传 png 文件时,我可以正确上传 jpg 文件。
显示错误。
An error has occurred during the creation of item "n/a".
我的config.yml是这样的。 我想我正确设置了 png 文件配置。 上传png还有别的检查点吗??
sonata_media:
# if you don't use default namespace configuration
#class:
# media: MyVendor\MediaBundle\Entity\Media
# gallery: MyVendor\MediaBundle\Entity\Gallery
# gallery_has_media: MyVendor\MediaBundle\Entity\GalleryHasMedia
default_context: default
db_driver: doctrine_orm # or doctrine_mongodb, doctrine_phpcr
contexts:
default: # the default context is mandatory
providers:
- sonata.media.provider.dailymotion
- sonata.media.provider.youtube
- sonata.media.provider.image
- sonata.media.provider.file
formats:
small: { width: 100 , quality: 70}
big: { width: 500 , quality: 70}
cdn:
server:
path: /myapp/web/uploads/media # Its not good I need to change depending on server...
filesystem:
local:
directory: %kernel.root_dir%/../web/uploads/media
create: false
providers:
image:
service: sonata.media.provider.image
resizer: sonata.media.resizer.simple # sonata.media.resizer.square
filesystem: sonata.media.filesystem.local
cdn: sonata.media.cdn.server
generator: sonata.media.generator.default
thumbnail: sonata.media.thumbnail.format
allowed_extensions: ['jpg', 'png', 'jpeg']
allowed_mime_types: ['image/pjpeg', 'image/jpeg', 'image/png', 'image/x-png']
您必须检查您的表单:configureFormFields()
错误在那里赶上:
// show an error message if the form failed validation
if (!$isFormValid) {
if (!$this->isXmlHttpRequest()) {
$this->addFlash('sonata_flash_error', $this->admin->trans('flash_create_error', array('%name%' => $this->admin->toString($object)), 'SonataAdminBundle'));
}
}
我遇到了同样的问题,但使用的是 JPG。对我来说,gd PHP 的扩展没有配置 JPEG 支持。
如果您想查看您的 gd 扩展程序支持哪些图像格式,请检查 gd_info();
的输出我正在使用 docker,所以在 Dockerfile 中我必须:
RUN apt-get install -y libpng-dev libjpeg-dev
RUN docker-php-ext-configure gd --with-gd=shared \
--with-jpeg-dir=/usr/lib/x86_64-linux-gnu/
RUN docker-php-ext-install gd
但本质上,请确保安装了必要的库,即 libjpg-dev(或 libpng-dev,具体取决于关于您遇到的问题),使用 --with-jpeg-dir 参数配置 gd 扩展,指向文件夹库已安装(默认是上面 docker 命令中的那个),它应该可以工作。