SharePoint 2007: Comment télécharger un fichier binaire en programmation bibliothèque de documents?

StackOverflow https://stackoverflow.com/questions/7819746

Question

Je rencontre un problème pour créer un programme élément dans la bibliothèque de documents dans SharePoint 2007.

Voici mon fragment de code, peut-être vous pourriez en mesure de signaler ce qui est mon erreur:

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

je frappe « référence d'objet non définie à une instance d'un objet » à ce lien code file2.Item.Update ();

Je vous remercie à l'avance.

Était-ce utile?

La solution

Pourquoi est-ce que vous définissez le destfile comme ça? Le nom de la pièce jointe est assez ..

string destFile = file.Name;

Il est seulement nécessaire d'ajouter l'URL relative du Attachement si vos besoins disent que vous avez besoin des dossiers, mais vous souhaitez créer les dossiers avant d'ajouter un fichier à lui.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top