我有一个包含自定义文件上传控件的自定义表单列表。 一旦用户选择文件并单击上传,我希望此文件直接转到该列表项中的附件列表。
但是,在新项目上将文件添加到SPContext.Current.ListItem.Attachments时,附件在保存后不会显示在列表中。
如果我在添加附件后在新项目上使用item.Update(),我会在Sharepoint中收到错误,但是当我返回列表时,该项目就会附带其附件。 当我保存(item.Update)导致第二次崩溃时,它似乎试图一次创建2个新条目。
以这种方式添加附件的正确方法是什么?
oSPWeb.AllowUnsafeUpdates = true;
// Get the List item
SPListItem listItem = SPContext.Current.ListItem;
// Get the Attachment collection
SPAttachmentCollection attachmentCollection = listItem.Attachments;
Stream attachmentStream;
Byte[] attachmentContent;
// Get the file from the file upload control
if (fileUpload.HasFile)
{
attachmentStream = fileUpload.PostedFile.InputStream;
attachmentContent = new Byte[attachmentStream.Length];
attachmentStream.Read(attachmentContent, 0, (int)attachmentStream.Length);
attachmentStream.Close();
attachmentStream.Dispose();
// Add the file to the attachment collection
attachmentCollection.Add(fileUpload.FileName, attachmentContent);
}
// Update th list item
listItem.Update();
答案 0 :(得分:0)
尝试使用SPAttachmentCollection.AddNow(string, byte[])
代替SPAttachmentCollection.Add(string, byte[])
。使用AddNow还意味着您不必调用SPListItem.Update()
。 AddNow将自己调用更新,而不会导致我看到的错误。除了这个改变,我有一个方法几乎完全按照你提供的代码运行,所以它应该这样工作。