Frage

Ich begegne ein Problem, um programmgesteuert ein Element in der Dokumentbibliothek in SharePoint 2007 zu erstellen.

Im Folgenden finden Sie mein Codefragment, vielleicht können Sie darauf hinweisen, was mein Fehler ist:

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;
                }
            }
        }
    }
});

Ich habe in diesem Link von Code File2.Item.Update () "Objektreferenz nicht auf eine Instanz eines Objekts festgelegt" gedrückt.

Danke im Voraus.

War es hilfreich?

Lösung

Warum setzen Sie das Ziegel so? Der Name des Anhangs ist genug ..

string destFile = file.Name;

Es ist nur erforderlich, die relative URL des Anhangs anzuhängen, wenn Ihre Anforderungen besagen, dass Sie Ordner benötigen, aber dann die Ordner erstellen, bevor Sie eine Datei hinzuzufügen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top