0
在我的Symfony2應用程序中,我需要提供一個選項來上傳文本文件。我已經通過使用FormBuilderInterface創建了一個'file'類型的字段來實現這一點。文件被正確上傳,但我真正需要的是從文件中獲取文本並將其插入到適當的數據庫表格列中。有沒有辦法在POST上從上傳的文件中獲取文本?謝謝。通過Symfony2中的FormBuilder將文件內容插入MySQL數據庫
在我的Symfony2應用程序中,我需要提供一個選項來上傳文本文件。我已經通過使用FormBuilderInterface創建了一個'file'類型的字段來實現這一點。文件被正確上傳,但我真正需要的是從文件中獲取文本並將其插入到適當的數據庫表格列中。有沒有辦法在POST上從上傳的文件中獲取文本?謝謝。通過Symfony2中的FormBuilder將文件內容插入MySQL數據庫
至少有兩種方法。
在這兩種情況下,主要的一點是要打開上傳並填寫其內容的實體屬性(後表單提交,但之前的數據保存到數據庫)。所以你需要有2個實體屬性:上傳的文件處理程序(未映射到數據庫)和文件文本本身(映射到數據庫)。
這裏是生命週期回調的例子:
實體:
/**
* @ORM\Entity()
* @ORM\HasLifecycleCallbacks
*/
class SomeEntity {
/**
* Virtual field used for handling the file
*
* @Assert\File()
*/
private $fileHandler;
/**
* @var string
*
* @ORM\Column(type="text")
*/
private $file;
/**
* @ORM\PrePersist()
* @ORM\PreUpdate()
*/
public function saveFileContent()
{
$tmpName = md5(uniqid(mt_rand(), true)) . '.' . $this->fileHandler->guessExtension();
try
{
$this->fileHandler->move(
'../../../tmp/',
$tmpName
);
} catch (\Exception $e) {}
$this->setFile(file_get_contents('../../../tmp/' . $tmpName));
unlink('../../../tmp/' . $tmpName);
}
}