2012-05-21 4 views
4

У меня есть изображение, которое мне нужно, чтобы сохранить в Sharepoint сайт под общими документамиSystem.Drawing.Image к SPFILE

По разным причинам изображение должно быть в System.Drawing.Image и сохраняются в общие документы на сайте sharepoint. его не нужно сохранять на локальном жестком диске.

У вас есть решение?

до сих пор я gtrying

MemoryStream ms = new MemoryStream(); 
imageIn.Save(ms,System.Drawing.Imaging.ImageFormat.Gif); 
byte[] imagebyte = ms.ToArray(); 

затем Savebinary функцию StreamReader, но не радость

ответ

1

Стартер для десяти, вам нужно будет изменить некоторые трудно закодированные настройки здесь

public void addToSharepointImageList(string folderName, string fileName, byte[] content) 
    { 
     string path = @"\\yoursite\yourlistname\"; 
     string baseSharePointPath = "http://yoursite/"; 
     string listName = "yourlistname"; 
     SharePointImagingService.Imaging svc = null; 

     try 
     { 
      path += folderName; 
      if (!Directory.Exists(path)) 
      { 
       Directory.CreateDirectory(path); 
      } 

      #region create sharepoint service 

      svc = new SharePointImagingService.Imaging(); 

      NetworkCredential nc = new NetworkCredential("username", "password", "domain"); 
      svc.Credentials = nc; 
      //svc.Credentials = System.Net.CredentialCache.DefaultCredentials; 
      svc.Url = baseSharePointPath + listName+ "/_vti_bin/imaging.asmx"; 
      svc.Discover(); 

      #endregion 

      svc.Upload(baseSharePointPath + listName, folderName, content, fileName, true); 
     } 
     catch (Exception e) 
     { 
      //deal with error 
     } 
     finally 
     { 
      svc.Dispose(); 
     } 

    } 

или, если вы пытаетесь просто сохранить файл непосредственно в списке без изображения, вы можете рассматривать sharepoint как гигантский общий ресурс и просто открывать поток и писать массив байтов t Вот.

+1

Да я искал больше за последний вариант почти сделал мне нужно имя файла – user1211929

+0

Поскольку SharePoint использует WebDAV вы можете просто записать файл для \\ sharepointserver \ общих документов. –

+0

@brianbrinley, правда? отлично работает для меня с Foundation 2010 ... по общему признанию, вы не можете установить какие-либо дополнительные свойства с помощью метода прямой записи, все они настроены на значения по умолчанию, но файл входит и доступен для всех. аналогично открытию списка в проводнике и перетаскиванию. – Stuart

3

Через некоторое время мне удалось найти решение избежать графических библиотек

void imageSave(System.Drawing.Image imageTobeSaved) 
    { 
     using (SPSite site = new SPSite("http://sptestsite/")) 
     { 
      using (SPWeb web = site.RootWeb) 
      { 
       SPFolder myLibrary = web.Folders["Shared%20Documents"]; 


       var stream = new System.IO.MemoryStream(); 
       string filename = "picture.jpg";   
       MemoryStream ms = new MemoryStream(); 
       imageTobeSaved.Save(ms, System.Drawing.Imaging.ImageFormat.jpg); 
       byte[] ImageByte = ms.ToArray(); 

       SPFile spfile = myLibrary.Files.Add(filename, ImageByte); 
       myLibrary.Update(); 


      } 
     } 
    } 
Смежные вопросы