You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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表的UID
  • allowed='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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.05 08:10:24