2012-02-08 176 views
1

我想上傳通過Symfony2中的AJAX請求接收的文本文件(使用Uploadify 2.1.4)。我如何在行動中處理它?我在official docs中發現了一些信息,但我想這不是我要找的。Symfony2:使用文件上傳插件上傳文件

例如,我處理這樣的情況在Zend框架是這樣的:

$adapter = new Zend_File_Transfer_Adapter_Http(); 
    $adapter->setFilters(array(
     'Rename' => array(
      'target' => sprintf('%s/%d_%s', Zend_Registry::get('config')->uploads->uploadPath, time(), $adapter->getFileName(null, false), 'UTF-8'), 
      'overwrite' => true, 
     ), 
    )); 
    try 
    { 
     $adapter->receive(); 
    } 
    catch (Zend_File_Transfer_Exception $e) 
    { 
     throw new Zend_Controller_Action_Exception(sprintf('Bad file: %s', $e->getMessage())); 
    } 

回答

6

我發現下面簡單的解決方案。也許這會對某人有所幫助。 ;)

的前端部分:

$('#upload-file').uploadify(
    { 
     script:   '/upload-file', 
     folder:   '/uploads', 
     method:   'POST', 
     uploader:  '/bundles/mybundle/flash/uploadify.swf', 
     cancelImg:  '/bundles/mybundle/images/cancel.png', 
     buttonImg:  '/bundles/mybundle/images/upload.png', 
     width:   48, 
     height:   48, 
     auto:   false, 
     queueID:  'fileQueue', 
     wmode:   'transparent', 
     fileDataName: 'uploaded_file', 
     fileDesc:  'Text File (*.txt)', 
     fileExt:  '*.txt', 
     sizeLimit:  8000000, 
     multi:   true, 
     simUploadLimit: 3, 
     onError:  function (event, id, fileObj, errorObj) 
     { 
      console.log(errorObj.type + ' Error: ' + errorObj.info); 
     } 
    }); 

後端部分:

public function uploadFileAction() 
{ 
    $request = $this->getRequest(); 
    $destination = preg_replace('/app$/si', 'web' . $request->request->get('folder'), $this->get('kernel')->getRootDir()); 
    $uploadedFile = $request->files->get('uploaded_file'); 

    $uploadedFile->move($destination, $uploadedFile->getClientOriginalName()); 

    return new Response(1); 
} 

問題被關閉!

+0

不幸的是,該解決方案缺乏驗證。可能你可以給我一些東西。謝謝! – 2012-02-09 19:24:23

+0

有人可以簡化到相關部分嗎?謝謝! – 2016-03-02 23:41:47