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