как скачать загруженный файл в symfony1.4 - PullRequest
0 голосов
/ 12 марта 2012

Я загружаю изображения с помощью sfWidgetFormInputFile () в папку MY_PROJECT/WEB/UPLOADS. Как загрузить эти файлы по этому пути.как получить путь к папке загрузки.А также, когда я загружаю файл, имя файла меняется на что-то вроде этого 1f3c6d9bf7b8ebda8b600576c55817c34715a8421. Как я могу загрузить его оригинальное имя?заранее спасибо.

Ответы [ 3 ]

2 голосов
/ 13 марта 2012

Существует более простой способ ... поместить функцию 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 переименовывает ваши загруженные файлы из-за имен файловдолжен быть уникальным в каталоге, поэтому, если вы хотите сохранить исходное имя, поле, в котором хранится имя файла, должно быть уникальным, и каждая модель должна иметь отдельный подкаталог для своих файлов.

2 голосов
/ 12 марта 2012

Вам необходимо получить оригинальное имя файла, например:

   $filename = $this->form->getValue('file')->getOriginalName();
   $this->exists = file_exists(sfConfig::get('sf_web_dir').$filename);

   if (!$this->exists)
     $this->form->getValue('file')->save(sfConfig::get('sf_web_dir').$filename);
0 голосов
/ 14 ноября 2013
public function executeDownload(sfwebRequest $request)
{
    $blog_user = Doctrine_Core::getTable('login')->find($request->getParameter('id'));
    //$this->forward404Unless($res);
    //$file=$blog_user->getDoc();
    //$path=sfConfig::get('sf_upload_dir').'/'.$file;
    header('content-type:image/jpg');
    header('Content-Description: File Transfer');
    //header('Content-Type: application/octet-stream');
    header('Accept-Ranges: bytes');
    header('Content-Disposition: attachment; filename='.basename($blog_user->getDoc()));
    header('Content-Transfer-Encoding: binary');
    header('Expires: 0');
    header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
    header('Pragma: public');
    header('Content-Length: ' . filesize($blog_user->getDoc()));
    ob_clean();
    flush();
    readfile($blog_user->getDoc());
    return sfView::NONE;
}
...