1
我有一个原型内容,其字段名为文件,它是MultiFileField(来自archetypes.multifile.MultiFileField)。该模式是这样的:提取OFS图像的Pdata对象,并将其保存为敏捷的Namedfile
MultiFileField('file',
primary=True,
languageIndependent=True,
widget = MultiFileWidget(
label= "File Uploads",
show_content_type = False,))
而且我有一个具有相同的字段名称是文件一个敏捷的内容类型,我想创建一个脚本,从原型的内容,并通过提取存储上传的对象它在敏捷定制内容类型上。对于敏捷定制内容类型的模式是:
form.widget(file=MultiFileFieldWidget)
file = schema.List(
title=_(u"File Attachment"),
required=False,
value_type=NamedFile(),
)
我观察到原型的MultiFileField存储上传的对象作为图像OFS PDATA,而对于后半部分,它存储作为plone.namedfile.file.NamedFile对象。有没有办法给OFS对象转换成Namedfile对象?
更新: 我已经找到了解决办法,但我不知道这是否是正确的事情。
for field in prev_obj.Schema().fields():
key = field.getName()
objects_list = []
value = field.getRaw(prev_obj)
for f in value:
data = str(f['file'].data)
filename = unicode(f['filename'])
contentType = f['content_type']
fileData = NamedFile(data=data, contentType=contentType, filename=filename)
objects_list.append(fileData)
new_obj.file = copy.copy(objects_list)
感谢您的宝贵意见,但我想你的代码,当我编辑的内容类型,我得到这个错误,MimeTypeException:畸形MIME类型()。 – user1225163
想尝试更新的答案提供的contentType和文件名NamedBlobFile? – vangheem
谢谢,会尝试更新的代码。 – user1225163