Получить изображение из библиотеки изображений - REST - PullRequest
1 голос
/ 08 ноября 2011

Я ищу предложение или пример для извлечения изображений (фактический файл, а не URL) из библиотеки изображений с использованием REST API.

Спасибо за любой ввод.

1 Ответ

1 голос
/ 08 ноября 2011

Задача 1: получение списка библиотек изображений на данном сайте

public static XmlNode GetPicLibListingXML(string imagingServiceURL)
 {

                Imaging wsImaging = new Imaging();
                wsImaging.UseDefaultCredentials = true;
                wsImaging.Url = imagingServiceURL;
                XmlNode xnPicLibs = wsImaging.ListPictureLibrary();

                return xnPicLibs;
   }

Пример возврата XML:

<Library name="{3C1D52F5-5387-490A-9A2D-A9C99A208C00}" title="Tech Images" guid="3c1d52f5-5387-490a-9a2d-a9c99a208c00" url="Tech Images" xmlns="http://schemas.microsoft.com/sharepoint/soap/ois/" />

Задача 2: Список изображений в данной библиотеке

public static XmlNode GetImageFileListing(string imagingServiceURL, string imageFileLibraryName)

 {
      Imaging wsImaging = new Imaging();
      ImageInfo curImageInfo = new ImageInfo();
       wsImaging.UseDefaultCredentials = true;
       wsImaging.Url = imagingServiceURL;
       XmlNode xnListItems = wsImaging.GetListItems(imageFileLibraryName, "");

       return xnListItems;
   }

Задача 3: Загрузить изображения (ы)

private const string ATTR_FILENAME = "name";

private const string FILENAMESPACEURI = "http://schemas.microsoft.com/sharepoint/soap/ois/";

public static bool DownloadImageFiles(string imagingServiceURL, string imageFileLibraryName, string[] fileNames, string saveToFolder)

 {
        Imaging wsImaging = new Imaging(); 
        wsImaging.UseDefaultCredentials = true;
        wsImaging.Url = imagingServiceURL;

       XmlElement parent = (XmlElement)wsImaging.Download(imageFileLibraryName, string.Empty, fileNames, 0, true);

       XmlNodeList files = parent.GetElementsByTagName("File", FILENAMESPACEURI);

        foreach (XmlNode file in files)
        {
             if (Directory.Exists(saveToFolder) == false)
            {
                 Directory.CreateDirectory(saveToFolder);
              }

           byte[] fileBytes = Convert.FromBase64String(file.InnerText);

            using (FileStream fs = File.OpenWrite(saveToFolder + file.Attributes[ATTR_FILENAME].Value))
             {
                    BinaryWriter writer = new BinaryWriter(fs);
                    writer.Write(fileBytes);
                    writer.Close();
                }
          }  
          return true;
        }

Примечание:

  • Класс Imaging () является веб-ссылкой на imagining.asmx
  • Вызов Download изначально возвращает XML, поэтому вам не нужно запускать его через преобразование в байт
  • Если вам нужно получить ссылку на веб-службу Imagine, проверьте это на MSDN:

http://msdn.microsoft.com/en-us/library/imaging.imaging.aspx

источник:

http://gourangaland.wordpress.com/2008/05/30/using-the-moss-imaging-web-service-to-download-imagesimaging-asmx/

...