2010-11-21 28 views
1

我想使用symfony 1.4的uploadify,但到目前为止我不能。Symfony和uploadify

Uploadify加载正确,我选择了我的文件,它表示文件已成功上传,但无处可见。

(我在本地主机上执行此操作)

有没有谁遇到过这个问题谁?

谢谢,汤姆

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

你需要显示一些代码。你知道uploadify与普通文件上传不同吗?每个文件都传递给它自己的服务器端脚本,而不是提交的表单的一部分? – 2010-11-21 14:42:05

+0

我忘了代码,对不起。我尝试了简单的move_uploaded_file,但它不起作用 – Thomas 2010-11-21 15:01:08

+0

我建议你使用伟大的['swWidgetFormUploadify'](https://github.com/rande/swFormExtraPlugin/blob/95bda9a7456665dc4910ea06ec8126ccfd82cb45/lib/widgets/swWidgetFormUploadify.class。 PHP)从'swFormExtraPlugin'。还有验证器。 – j0k 2012-05-18 13:23:58

回答

0

我只能猜测,那是因为你要上传的同时登录到系统,但闪光灯不从浏览器继承会话数据,这意味着你将永远是因为symfony认为你没有登录,所以拒绝允许你尝试访问的任何功能。

所以你需要手动设置变量以便flash使用与浏览器相同的登录会话: jQuery Code(needs在一个php文件中,不会在js文件中工作):

$('#file_upload').uploadify({ 
    .... config here 
    'scriptData': { '<?php echo session_name() ?>': '<?php echo session_id() ?>' } 
}); 
1
在存储在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  : '<?php echo url_for("attachments/upload?uploadify=onUpload&" . session_name() . "=" . session_id(), true)?>',