Symfony и загрузить - PullRequest
       32

Symfony и загрузить

1 голос
/ 21 ноября 2010

Я хочу использовать uploadify с Symfony 1.4, но пока не смог.

Uploadify загружается правильно, я выбираю свои файлы, он говорит, что файлы были успешно загружены, но нигде нет.

(я делаю это на локальном хосте)

Кто-нибудь сталкивался с этой проблемой раньше?

Спасибо, Том

    $file = $request->getParameter('file');
    $filename = sha1($file->getOriginalName()).$file->getExtension($file->getOriginalExtension());
    $file->save(sfConfig::get('sf_upload_dir').'/'.$filename);

Ответы [ 2 ]

1 голос
/ 18 мая 2012

в моем сеансе проекта хранится в файлах cookie, поэтому я нашел решение, создав дополнительный класс хранения сеанса

class MySessionStorage extends sfSessionStorage
{
  public function initialize($options = null)
  {
    $request = sfContext::getInstance()->getRequest();

    // work-around for uploadify
    if ($request->getParameter('uploadify') == "onUpload")
    {
      $sessionName = $options["session_name"];
      if($value = $request->getParameter($sessionName))
      {
        session_name($sessionName);
        session_id($value);
      }
    }

    parent::initialize($options);
  }
}

затем изменил factories.yml на

all:
  storage:
    class: MySessionStorage

и тогда параметру "uploader" понравится

uploader      : '<?php echo url_for("attachments/upload?uploadify=onUpload&" . session_name() . "=" . session_id(), true)?>',
0 голосов
/ 03 января 2011

Я могу только догадываться, что это потому, что вы пытаетесь загрузить данные, войдя в систему, но Flash не наследует данные сеанса из браузера, это означает, что вам всегда будет отказано в доступе к любой функции, к которой вы пытаетесь получить доступ, посколькуSymfony считает, что вы не вошли в систему.

Поэтому вам нужно вручную установить переменные, чтобы Flash мог использовать тот же сеанс входа в систему, что и браузер: jQuery Code (должен находиться в файле php, не будет работатьв файле js):

$('#file_upload').uploadify({
  .... config here
  'scriptData': { '<?php echo session_name() ?>': '<?php echo session_id() ?>' }
});
...