在自定义处理程序中将上传的文件保存到数据库

Saving uploaded file to DB in custom handler

我有一个 DataObject 名为文档:

class Document extends DataObject {
    private static $db = array(
        'Name' => "varchar" 
    );

    private static $has_one = array(
        'Document' => 'File'
    );
}

并将其放在前端表单中。文件上传正确,我想将详细信息保存到数据库中。

public function submitDocument($data, $form) {
    $document = new Document();
    $document->Name = $data['Name'];
    $document->Document = $data['Document'];
    $document->write();
}

现在名称已写入数据库,但文档并未写入(它在文件系统中)。我知道我可以只写整个东西,因为字段的名称在数据库中是相同的,但是我想手动编写它,因为我想做更复杂的事情。我查看了作为以下内容出现的属性:{"Files":["19"]} 所以我也尝试了 $data['Document']['Files'][0],它在我的测试中以 20 的形式登录,但它仍然没有保存。我还手动尝试仅使用 20 进行测试,但这也不起作用。如何保存?

public function submitDocument($data, $form) {
    $document = new Document();
    $document->Name = $data['Name'];
    $document->DocumentID = $data['Document']['Files'][0];
    $document->write();
}