SharePoint 2007: как программно загрузить двоичный файл в библиотеку документов?
Я столкнулся с проблемой при программном создании элемента в библиотеке документов в SharePoint 2007.
Ниже приведен фрагмент моего кода, возможно, вы сможете указать, в чем заключается моя ошибка:
SPSecurity.RunWithElevatedPrivileges(delegate()
{
using (SPSite site = new SPSite(_url))
{
using (SPWeb web = site.OpenWeb())
{
SPList customList = web.Lists["Test1"];
foreach (SPListItem ltItem in customList.Items)
{
if (ltItem.Attachments != null && ltItem.Attachments.Count > 0)
{
//Get Test1 File Collection
SPFolder folder = web.GetFolder(ltItem.Attachments.UrlPrefix);
SPFileCollection fileColl = folder.Files;
//Get binary data of attachment
SPFile file = ltItem.ParentList.ParentWeb.GetFile(ltItem.Attachments.UrlPrefix + ltItem.Attachments[0]);
byte[] fileData = file.OpenBinary();
//Get Relative URL of attachment destination
string destFile = fileColl.Folder.Url + "/" + file.Name;
web.AllowUnsafeUpdates = true;
//Add attachment into Document Library
SPDocumentLibrary docLib = (SPDocumentLibrary)web.Lists["Test2"];
SPFile file2 = docLib.RootFolder.Files.Add(destFile, fileData, true);
file2.Item.Update();
web.AllowUnsafeUpdates = false;
}
}
}
}
});
Я нажимаю "Ссылка на объект не установлена на экземпляр объекта" по этой ссылке кода file2.Item.Update();
Заранее благодарю.
1 ответ
Решение
Почему вы устанавливаете destFile таким образом? Название вложения достаточно..
string destFile = file.Name;
Добавлять относительный URL-адрес вложения необходимо только в том случае, если в ваших требованиях указано, что вам нужны папки, но затем вы создадите папки, прежде чем добавить в них файл.