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”,其中“eat.00001”是包含文件字段的自定义类型的对象...
有趣的是,如果我调用:
context.getFirst_file().getContentType()
它返回“application/pdf”,这是正确的,因为它是一个 pdf 文件。
我在这里很迷路,非常感谢任何帮助。提前致谢!
I have a custom content type with 3 FileFields (plone.app.blob.field.FileField) and I want to get their url's, so i can put them on my custom view and people will be able to download these files.
However, when using Clouseau to test and debug, I call :
context.getFirst_file().absolute_url()
Where getFirst_file() is the accessor to the first file (field called 'first_file').
The url returned is 'http://foo/.../eat.00001', where 'eat.00001' is the object of my custom type that contains the file fields...
The interesting thing is, if I call:
context.getFirst_file().getContentType()
It returns 'application/pdf', which is correct since it's a pdf file.
I'm pretty lost here, any help is appreciated. Thanks in advance!
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
文件字段不支持
absolute_url
方法;相反,通过获取,您从对象本身继承该方法,因此您的结果看。此外,调用 getFirst_field() 将返回该字段的实际可下载内容,而不是可以提供此类信息的字段本身。相反,您应该使用附加到对象 URL 的
at_download
脚本,后跟字段 id:您还可以通过将字段名称传递给
来重复使用该字段的 Archetypes 小部件。 widget
方法:这将显示文件大小、图标(如果可用)、文件名和文件 MIME 类型。
在这两个示例中,我假设字段的名称是“first_field”。
File fields do not support a
absolute_url
method; instead, through acquisition you inherit the method from the object itself, hence the results you see. Moreover, callinggetFirst_field()
will return the actual downloadable contents of the field, not the field itself which could provide such information.Instead, you should use the
at_download
script appended to the object URL, followed by the field id:You can also re-use the Archetypes widget for the field, by passing the field name to the
widget
method:This will display the file size, icon (if available), the filename and the file mime type.
In both these examples, I assumed the name of the field is 'first_field'.