我对使用Extbase和FAL下载文件有疑问。 我可以用
渲染图像<f:image src="{file.uid}" alt="" width='100' height="100" treatIdAsReference="1"/>
我可以获取图像,但我也有PDF文件可供下载,我无法使用此ViewHelper。 还有其他ViewHelper用于文件下载吗? 如果我转储该文件我得到这个:
file => TYPO3\CMS\Extbase\Domain\Model\FileReferenceprototypepersistent entity (uid=1342, pid=310)
originalResource => NULL
uid => 1342 (integer)
_localizedUid => 1342 (integer)modified
_languageUid => 0 (integer)modified
pid => 310 (integer)
对于文件,originalResource为null,对于图像,使用该ViewHelper打印图像。我无法获得档案......
欢迎任何帮助......
答案 0 :(得分:13)
您可以使用originalResource的publicURL属性来创建文件链接。
Sample Fluid,用于生成域模型属性
中引用的文件列表<ul class="download-list">
<f:for each="{myObject.myFALproperty}" as="file" >
<li><a href="{file.originalResource.publicUrl}">{file.originalResource.title}</a></li>
</f:for>
</ul>
只需使用{myObject.myFAL属性}即可查看您可以访问的内容。
如果您需要更多属性,请参阅原始基础和参考,以防您想使用位于FlexForm中的覆盖
原始属性
filename :{myObject.myFALproperty.originalResource.originalFile.name}
title:{myObject.myFALproperty.originalResource.originalFile.title}
description:{myObject.myFALproperty.originalResource.originalFile.description}
alt:{myObject.myFALproperty.originalResource.originalFile.alternative}
uid:{myObject.myFALproperty.originalResource.originalFile.uid}
path:{myObject.myFALproperty.originalResource.publicUrl}
参考属性
title: {myObject.myFALproperty.originalResource.title}
description {myObject.myFALproperty.originalResource.description}
希望有所帮助。
仅供参考,这是相应的TCA的样子,但你显然已经知道了(注意这个样本的maxitems设置为10:
'myFALproperty' => array(
'exclude' => 0,
'label' => 'LLL:EXT:xy_sample/Resources/Private/Language/locallang_db.xlf:tx_xysample_domain_model_myobject.myFALproperty',
'config' =>
\TYPO3\CMS\Core\Utility\ExtensionManagementUtility::getFileFieldTCAConfig(
'myFALproperty',
array('maxitems' => 10)
),
),
答案 1 :(得分:2)
您可以像这样获取PDF文件的URI:
在您的FLUID模板中:
<f:uri.image src="{file.uid}" treatIdAsReference="1"/>
OUTPUT /路径/到/你/ PDF
即使&#34; originalResource对于文件&#34;为空,这也是有效的,就像你在问题中所述。
在您的FLUID模板中创建一个链接(使用内联表示法)
<a href="{f:uri.image(src:'{file.uid}', treatIdAsReference: 1)}">
Download PDF
</a>
答案 2 :(得分:1)
您可以使用VHS viewhelper。 请查看以下代码:
<v:resource.file additionalAttributes="{foo: 'bar'}" data="{foo: 'bar'}" identifier="[mixed]" categories="[mixed]" treatIdAsUid="1" treatIdAsReference="1" as="NULL">
<!-- tag content - may be ignored! -->
</v:resource.file>
链接到文档: https://fluidtypo3.org/viewhelpers/vhs/master/Resource/FileViewHelper.html
您必须安装vhs扩展名,并在模板文件中添加命名空间。
{namespace v=FluidTYPO3\Vhs\ViewHelpers}
作为最后一件事,您应该将文件索引为typo3。为此,创建一个调度程序任务,然后选择文件抽象层:在存储任务中提取元数据。