TYPO3 10.4中如何创建TCA字段上传PDF至SQL mediumBlob
解决方案:TYPO3 TCA上传PDF不创建sys_file_reference关联
默认的getFileFieldTCAConfig是为文件引用机制设计的,必然会生成sys_file_reference关联记录。要实现上传PDF但不创建该关联,你需要改用原生的file类型TCA配置,直接存储sys_file的UID,而非通过中间表关联。
修改后的TCA代码如下:
'pdf_data' => [ 'exclude' => true, 'label' => 'PDF文件', 'config' => [ 'type' => 'file', 'allowed' => 'pdf', 'maxitems' => 1, 'minitems' => 0, // 可选:指定自定义上传目录,需确保目录存在且有写入权限 'uploadfolder' => 'uploads/tx_yourextension/pdf', // 可选:关闭缩略图显示(PDF无需缩略图) 'show_thumbs' => false, 'size' => 1, ], ],
关键说明:
type='file':直接使用原生文件字段类型,不会触发sys_file_reference的创建逻辑,字段值存储的是sys_file表的UIDallowed='pdf':严格限制仅允许上传PDF格式文件uploadfolder:自定义上传目录,避免和其他扩展的文件混存,需自行创建目录并设置正确权限- 数据库字段要求:对应的数据库字段需设置为
int(11)类型,用于存储文件UID
前端调用示例:
如果需要在前端输出该PDF文件,可通过文件UID获取文件对象:
use TYPO3\CMS\Core\Resource\ResourceFactory; use TYPO3\CMS\Core\Utility\GeneralUtility; $fileUid = $record['pdf_data']; if ($fileUid) { $resourceFactory = GeneralUtility::makeInstance(ResourceFactory::class); $file = $resourceFactory->getFileObject($fileUid); // 获取文件公开URL $fileUrl = $file->getPublicUrl(); }
内容的提问来源于stack exchange,提问作者Matthew
相关产品推荐
相关产品推荐

