2009-04-22 4 views
2

Ich arbeite daran, eine große Anzahl von Dokumenten von einem älteren Dokumenten-Management-System nach SharePoint zu verschieben (MOSS 2007). Das ursprüngliche System speicherte die Dokumente als Binärdaten in Bildfeldern in einer SQL Server-Datenbank.Schreiben von Datenbank-Blobs in SharePoint Document Libaray

Mein Gedanke ist, programmatisch mehrere Dokumentbibliotheken zu erstellen, um diese Dokumente zu gruppieren. Ich plane dann, die binären Daten in einen Dateistream zu lesen und dann diesen Stream zu verwenden, um die Datei nach SharePoint hochzuladen.

Hat jemand etwas ähnliches getan? Gibt es einen besseren Ansatz als das, woran ich arbeite? Wenn jemand Beispiele zum Lesen aus einem binären Datenbankfeld und zum Schreiben in eine SharePoint-Dokumentbibliothek hat, würde ich das ebenfalls begrüßen. Vielen Dank.

Antwort

4

Sie können einfach Dokument programmgesteuert aus einem Bytearray erstellen. Hier ist ein Code-Snippet, auf dem Sie aufbauen können.

// 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(); 
    } 
} 
+0

Danke für die Antwort. Ich werde es benutzen. –