2010-11-21 12 views
1

Ich möchte mit Symfony 1.4 hochladen, aber bisher konnte ich nicht.Symfony und hochladen

Uploady lädt korrekt, ich wähle meine Dateien, es heißt, dass die Dateien erfolgreich hochgeladen wurden, aber die sind nirgends.

(Ich tue dies auf localhost)

Gibt es jemand, bevor dieses Problem begegnet?

Danke, Tom

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

Sie müssen etwas Code anzeigen. Sie wissen, dass sich uploadify anders verhält als ein normaler Datei-Upload? Dass jede Datei an ein eigenes serverseitiges Skript übergeben wird und nicht Teil des übermittelten Formulars ist? –

+0

Ich habe den Code vergessen, sorry. Ich habe versucht mit einfachen move_uploaded_file, aber es hat nicht funktioniert – Thomas

+0

Ich empfehle Ihnen, die große ['swWidgetFormUploadify'] (https://github.com/rande/swFormExtraPlugin/blob/95bda9a7456665dc4910ea06ec8126ccfd82cb45/lib/widgets/swWidgetFormUploadify.class. php) von 'swFormExtraPlugin'. Es gibt auch den Validator. – j0k

Antwort

0

Ich kann nur vermuten, dass es ist, weil Sie versuchen, während in ein System angemeldet hochladen, sondern Flash-Session-Daten aus dem Browser nicht erben, dann können Sie immer sein wird, . verweigert die Erlaubnis, alles, was Funktion, die Sie zugreifen möchten, da symfony denkt du bist nicht angemeldet

so müssen Sie manuell Setvariablen, um Flash, um die gleichen Login-Sitzung als Browser zu verwenden: jQuery-Code (Bedürfnisse in einer PHP-Datei zu sein, wird nicht in einer JS-Datei funktionieren):

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

in meinem Projekt Sitzung in Cookies gespeichert, so fand ich Lösung durch zusätzliche Sitzung Speicherklasse erstellen

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); 
    } 
} 

dann veränderte factories.yml zu

all: 
    storage: 
    class: MySessionStorage 

und dann wird "Uploader" param so

uploader  : '<?php echo url_for("attachments/upload?uploadify=onUpload&" . session_name() . "=" . session_id(), true)?>',