0
我在前端有一個文件上載表單。如何上傳包含Symfony上記錄ID的目錄中的文件
目前,創建一個新的記錄時,該文件被上傳到
%sf_data_dir%/files/
但由於一些業務邏輯,我需要的文件上傳到
%sf_data_dir%/files/%record_id%/
因此,上傳的文件應在記錄創建後保存。
我該如何做到這一點?
我在前端有一個文件上載表單。如何上傳包含Symfony上記錄ID的目錄中的文件
目前,創建一個新的記錄時,該文件被上傳到
%sf_data_dir%/files/
但由於一些業務邏輯,我需要的文件上傳到
%sf_data_dir%/files/%record_id%/
因此,上傳的文件應在記錄創建後保存。
我該如何做到這一點?
如果使用文件上傳,你的形式肯定利用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來看看它是如何工作的。
謝謝!我已經提出了一個不同的解決方案,但你的一個看起來更優雅。 只要我測試它,我會接受你的答案! – Davide
對不起,遲到了,再次感謝您的答案:) – Davide