Plone 4 -在Plone .app.blob.field. filefield中获取文件的url



我有一个自定义的内容类型与3 FileFields (plone.app.blob.field.FileField),我想得到他们的url,所以我可以把它们放在我的自定义视图和人们将能够下载这些文件。然而,当使用Clouseau进行测试和调试时,我调用:

context.getFirst_file().absolute_url()

其中getFirst_file()是第一个文件(名为'first_file'的字段)的访问器。

返回的url是'http://foo/.../eat '。00001',在哪里吃。00001'是我的自定义类型的对象,包含文件字段…

有趣的是,如果我调用:
context.getFirst_file().getContentType()

它返回'application/pdf',这是正确的,因为它是一个pdf文件。

我在这里迷路了,任何帮助都很感激。提前感谢!

文件字段不支持absolute_url方法;相反,通过获取,您可以从对象本身继承方法,从而获得您看到的结果。此外,调用getFirst_field()将返回字段的实际可下载内容,而不是可以提供此类信息的字段本身。

相反,您应该使用at_download脚本附加到对象URL,后面跟着字段id:

<a href="" tal:attributes="href string:${context/absolute_url}/at_download/first_file">First File</a>

您还可以通过将字段名称传递给widget方法来重用字段的Archetypes小部件:

<metal:field use-macro="python:context.widget('first_field', mode='view')">
  First File
</metal:field>

这将显示文件大小,图标(如果可用),文件名和文件mime类型。

在这两个例子中,我假设字段的名称是'first_field'

相关内容

  • 没有找到相关文章

最新更新