使用 Vich Uploader Bundle 上传我的图像工作正常,它们存储在正确的目录和数据库中。但是,当尝试访问它们或显示它们时,找不到它们。(找不到对象异常或仅显示一个空方块。
任何想法为什么会这样?
配置:
vich_uploader:
db_driver: orm
mappings:
carousel:
uri_prefix: %kernel.root_dir%/web/uploads/carousel
upload_destination: '%kernel.root_dir%/web/uploads/carousel'
namer: vich_uploader.namer_origname
此外,我的 imageFile 设置器根本不起作用。第一次上传图片时,除了 imageFile 之外,一切都设置好了(updatedAt、imageSize、imageName),它总是为空。
例如
Image {#1601 ▼
-id: 1
-imageFile: null
-imageSize: 34703
-imageName: "5a7f9db650f78_EntityType.png"
-updatedAt: DateTime {#1599 ▼
}
}
这是我的实体:
namespace AppBundle\Entity;
use Doctrine\ORM\Mapping as ORM;
use Symfony\Component\HttpFoundation\File\File;
use Symfony\Component\Validator\Constraints as Assert;
use Vich\UploaderBundle\Mapping\Annotation as Vich;
/**
* Image
*
* @ORM\Table(name="app_image")
* @ORM\Entity
* @Vich\Uploadable
*/
class Image {
/**
* @var integer
*
* @ORM\Column(name="id", type="integer")
* @ORM\Id
* @ORM\GeneratedValue(strategy="AUTO")
*/
private $id;
/**
* NOTE: This is not a mapped field of entity metadata, just a simple property.
*
* @Vich\UploadableField(mapping="carousel", fileNameProperty="imageName", size="imageSize")
* @Assert\File()
* @var File
*/
private $imageFile;
/**
* @ORM\Column(type="integer")
*
* @var integer
*/
private $imageSize;
/**
* @var string
* @ORM\Column(type="string", nullable=false)
*/
private $imageName;
/**
* @ORM\Column(type="datetime")
*
* @var \DateTime
*/
private $updatedAt;
public function getImageFile(){
return $this->imageFile;
}
/**
*
* @param \Symfony\Component\HttpFoundation\File\File|\Symfony\Component\HttpFoundation\File\UploadedFile $file
*
* @return File
*/
public function setImageFile(\Symfony\Component\HttpFoundation\File\File $image = null)
{
$this->imageFile = $image;
if ($image instanceof File) {
$this->updatedAt = new \DateTime();
}
return $this;
}
/**
* Get id
*
* @return integer
*/
public function getId()
{
return $this->id;
}
/**
* Set updatedAt
*
* @param \DateTime $updatedAt
*
* @return Image
*/
public function setUpdatedAt($updatedAt)
{
$this->updatedAt = $updatedAt;
return $this;
}
/**
* Get updatedAt
*
* @return \DateTime
*/
public function getUpdatedAt()
{
return $this->updatedAt;
}
/**
* Set imageSize
*
* @param integer $imageSize
*
* @return Image
*/
public function setImageSize($imageSize)
{
$this->imageSize = $imageSize;
return $this;
}
/**
* Get imageSize
*
* @return integer
*/
public function getImageSize()
{
return $this->imageSize;
}
/**
* Set imageName
*
* @param string $imageName
*
* @return Image
*/
public function setImageName($imageName)
{
$this->imageName = $imageName;
return $this;
}
/**
* Get imageName
*
* @return string
*/
public function getImageName()
{
return $this->imageName;
}
}
我有一种感觉,这是由我的安装或其他任何事情中的“更深层次”问题引起的,因为在那之前一切正常。如果我例如部分
if ($image instanceof File) {
$this->updatedAt = new \DateTime();
}
setter 的注释被注释掉,我得到一个updatedAt 不能为 null的异常,因此以某种方式访问了 setter,但它没有将图像设置为上传的文件。我是否使用了错误的目录或错误的访问权限,或者可能是什么?
先感谢您!