Запись больших двоичных объектов в документ SharePoint Libaray - PullRequest
2 голосов
/ 22 апреля 2009

Я работаю над переносом большого количества документов из старой системы управления документами в SharePoint (MOSS 2007). Исходная система сохраняла документы в виде двоичных данных в полях изображения в базе данных сервера SQL.

Моя идея состоит в том, чтобы программно создать несколько библиотек документов для группировки этих документов. Затем я планирую прочитать двоичные данные в файловый поток, а затем использовать этот поток для загрузки файла в SharePoint.

Кто-нибудь делал что-то подобное? Есть ли лучший подход, чем то, над чем я работаю? Кроме того, если у кого-нибудь есть примеры чтения из поля двоичной базы данных и записи в библиотеку документов SharePoint, я был бы признателен. Благодарю.

1 Ответ

4 голосов
/ 22 апреля 2009

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

// If you have very large document, you might consider export the BLOBs to disk instead of in memory
string connstr = @”Data Source=.;Initial Catalog=AdventureWorks;Persist Security Info=True;User ID=sa;Password=sa”;

SqlConnection conn = new SqlConnection(connstr);
conn.Open();

SqlDataAdapter da = new SqlDataAdapter();
da.SelectCommand = new SqlCommand(“SELECT * FROM [dbo].[ImageStore]“, conn);
DataSet ds= new DataSet();
da.Fill(ds);

byte[] blob = (byte[])ds.Tables[0].Rows[0]["imageContent"];


using (SPSite destinationSite = new SPSite("http://YourSite"))
{
  using (SPWeb = destinationSite.OpenWeb("http://YourSite"))
  {
    SPList destinationDocuments = destinationWeb.Lists["Documents"];
    string fileName = "mydoc.jpg";
    string relativeDestinationUrl = destinationDocuments.RootFolder.Url + "/";
    stringfileName += sourceItem.File.Name;
    relativeDestinationUrl += fileName;

    SPFile destinationFile = ((SPDocumentLibrary)destinationDocuments).RootFolder.Files.Add(relativeDestinationUrl, blob, true);
    SPListItem item = destinationFile.Item;
    item.UpdateOverwriteVersion();
  }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...