У меня возникла проблема с загрузкой файлов на 2.6, которая отлично работала в предыдущих версиях. Я не могу понять, в чем проблема, нет ошибки, и когда я удаляю объект post, я вижу там имя файла, но в папке с изображениями нет файла.Symfony2 - 2.6 загрузки файлов
Папка с изображениями находится в myproject/web/images.
Использование SonataAdmin для загрузки файла и снова ошибок нет.
Может кто-нибудь указать, что я делаю неправильно или что изменилось?
Редактировать: После просмотра через папки я заметил, что он создал другую папку веб-изображений в/var/www/html.
Любая идея, насколько это правильно? Моя папка проекта находится в/var/www/html/myproject.
Попытался добавить еще 2 /../../, но получил ошибку: Unable to create the "/var/www/html/myproject/src/AppBundle/Entity/../../../../../../web/images/" directory
. И удалил 2 /../../ и еще ничего.
Вызов файла в веточке со следующим:
{% for photo in photos %}
<a href="{{ asset(['images/', photo.image]|join) }}">
<img src="{{ asset(['images/', photo.image]|join) }}" width="400" height="600" alt=""/>
</a>
{% endfor %}
Сообщение сущности
/**
* @var string
*
* @ORM\Column(name="file", type="string", length=255)
*/
private $image;
public $file;
/**
* Set image
*
* @param string $image
* @return Post
*/
public function setImage($image)
{
$this->image = $image;
return $this;
}
/**
* Get image
*
* @return string
*/
public function getImage()
{
return $this->image;
}
public function getUploadDir()
{
return 'images/';
}
public function getUploadRootDir()
{
return __DIR__ . '/../../../../web/' . $this->getUploadDir();
}
public function getWebPath()
{
return null === $this->image ? null : $this->getUploadDir() . '/' . $this->image;
}
public function getAbsolutePath()
{
return null === $this->image ? null : $this->getUploadRootDir() . '/' . $this->image;
}
/**
* @ORM\PrePersist()
* @ORM\PreUpdate()
*/
public function preUpload()
{
if (null !== $this->file) {
$this->image = uniqid() . '.' . $this->file->guessExtension();
}
}
/**
* @ORM\PostPersist()
* @ORM\PostUpdate()
*/
public function upload()
{
if (null === $this->file) {
return;
}
// If there is an error when moving the file, an exception will
// be automatically thrown by move(). This will properly prevent
// the entity from being persisted to the database on error
$this->file->move($this->getUploadRootDir(), $this->image);
$this->file = null;
}
/**
* @ORM\PostRemove()
*/
public function removeUpload()
{
if ($file = $this->getAbsolutePath()) {
unlink($file);
}
}
MyProject/веб/изображений записываемые? какое разрешение вы ему дали? –
Да. Изменен владелец на www-data: www-данные и разрешение 775. –
Можете ли вы попробовать это и сообщить нам, если его работа public function getUploadDir() { return 'images'; // удалить трейлинг-косую черту (/) } –