Un esempio di come savare tutti gli allegati di un item di una lista SharePoint su una share di rete.

C#

private void CopyAllAttachments(string webUrl, string listId, int itemId, string networkPath)
{
  SPSecurity.RunWithElevatedPrivileges(delegate()
  {
    using (SPSite siteE = new SPSite(webUrl))
    {
      using (SPWeb webE = siteE.OpenWeb())
      {
        SPList list = webE.Lists[new Guid(listId)];
        SPListItem item = list.GetItemById(itemId);
        SPAttachmentCollection attachments = item.Attachments;
        if (attachments == null || attachments.Count == 0)
        {
          //file inesistente o vuoto
          throw new FileNotFoundException("File not found: " + networkPath);
        }
        else
        {
          foreach (string fileName in attachments)
          {
            SPFile file = webE.GetFile(attachments.UrlPrefix + fileName);
            //path to save
            string newFileName = file.Name;
            string newFullFileName = System.IO.Path.Combine(networkPath, newFileName);

            //copio il file
            using (Stream rd = file.OpenBinaryStream())
            {
              byte[] bytesInStream = new byte[rd.Length];
              rd.Read(bytesInStream, 0, (int)bytesInStream.Length);
              using (FileStream wr = File.Create(newFullFileName))
              {
                wr.Write(bytesInStream, 0, bytesInStream.Length);
              }
            }
          }
        }
      }
    }
  });
}
va richiamata con

C#

CopyAllAttachments("http://intranet.sgart.local", "{8EA52702-AEB3-453E-9303-A5A8033338B7}", 5, @"c:\temp");
CopyAllAttachments("http://intranet.sgart.local", "{8EA52702-AEB3-453E-9303-A5A8033338B7}", 5, @"\\server1\temp");
Se il codice gira all'interno di SharePoint, l'utente dell'application pool deve avere i permessi di scrittura sulla share di rete e/o cartella
Tags:
C#236 SharePoint498 SharePoint 2010224
Potrebbe interessarti anche: