使用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的setter根本不工作。第一次上传图像时,除了imageFile之外,一切都已设置(updatedAt,imageSize,imageName),它始终为null ..
e.g。
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但它没有将图像设置为上传的文件。 我使用的是错误的目录或错误的访问权限,还是它还有什么用呢?
提前谢谢!
答案 0 :(得分:0)
我有同样的问题。至少在我这方面,这是服务器配置的事情。
如果运行syfmony的服务器,它将像魅力php bin /控制台服务器一样运行:运行
如果运行php服务器,则不会显示图像php -S 127.0.0.1:8000 -t public