Существует более простой способ ... поместить функцию generateFieldNameFilename()
в модель или класс формы (где FieldName
- верблюжье-имя поля, в котором хранится изображение).
// your form or model class
public function generateImageFilename(sfValidatedFile $file)
{
return $file->getOriginalName();
}
// in your template ($model => model object)
<?php echo link_to($model->getImage(), '/uploads/'.$model->getImage(), array('target' => '_blank')); ?>
// to dispaly the image in the link
<?php echo link_to(image_tag('/uploads/'.$model->getImage()), '/uploads/'.$model->getImage(), array('target' => '_blank')); ?>
Это откроет ваше изображение в новой вкладке.Если вы хотите принудительно загрузить изображения в вашем каталоге загрузок, поместите в него файл .htaccess
(модуль заголовков должен быть включен sudo a2enmod headers
):
SetEnvIf Request_URI "\.jpg$" requested_jpg=jpg
Header add Content-Disposition "attachment" env=requested_jpg
Кстати, Symfony переименовывает ваши загруженные файлы из-за имен файловдолжен быть уникальным в каталоге, поэтому, если вы хотите сохранить исходное имя, поле, в котором хранится имя файла, должно быть уникальным, и каждая модель должна иметь отдельный подкаталог для своих файлов.