2011-10-03 46 views
0

我在前端有一個文件上載表單。如何上傳包含Symfony上記錄ID的目錄中的文件

目前,創建一個新的記錄時,該文件被上傳到

%sf_data_dir%/files/ 

但由於一些業務邏輯,我需要的文件上傳到

%sf_data_dir%/files/%record_id%/ 

因此,上傳的文件應在記錄創建後保存。

我該如何做到這一點?

回答

2

如果使用文件上傳,你的形式肯定利用sfValidatorFile的(如果沒有,那是錯的):

$this->validatorSchema['image'] = new sfValidatorFile(array(
            'required' => true, 
            'mime_types' => 'web_images', 
          )); 

這個驗證返回可以在任何地方,你想保存一個sfValidatedFile實例(它比更安全move_uploaded_file,檢查目錄,文件名......)。

在你的行動(或形式,只要你想/需要),現在你可以這樣做:

protected function processForm(sfWebRequest $request, sfForm $form) 
{ 
    $form->bind(
    $request->getParameter($form->getName()), 
    $request->getFiles($form->getName()) 
); 

    if ($form->isValid()) 
    { 
    $job = $form->save(); 
    // Saving the file to filesystem 
    $file = $form->getValue('my_upload_field'); 
    $file->save('/path/to/save/'.$job->getId().'/myimage.'.$file->getExtension()); 
    $this->redirect('job_show', $job); 
    } 
} 

不要猶豫,打開sfValidatedFile來看看它是如何工作的。

+0

謝謝!我已經提出了一個不同的解決方案,但你的一個看起來更優雅。 只要我測試它,我會接受你的答案! – Davide

+0

對不起,遲到了,再次感謝您的答案:) – Davide

相關問題