2016-08-03 30 views
1

Ich kann das Dokument hochladen, aber wenn ich es anzeigen/herunterladen, scheint es einen Fehler zu geben. Es sagt, es lief ein Problem beim Öffnen dieses PDFs. Ran into a problemHochladen von Dokumentkörper zu SharePoint aus CRM Notizen C#

Ich habe den folgenden Code

using (var stream = new System.IO.MemoryStream()) 
{ 
    byte[] myByte = System.Text.ASCIIEncoding.Default.GetBytes(documentBody); 
    foreach (byte element in myByte) 
    { 
     stream.WriteByte(element); 
    } 
    stream.Seek(0, SeekOrigin.Begin); 
    var newFile = new FileCreationInformation { Url = fileName, ContentStream = stream, Overwrite = true }; 

    file = list.RootFolder.Files.Add(newFile); 
    file.CheckOut(); 
    file.CheckIn(string.Empty, CheckinType.MajorCheckIn); 
    context.Load(file); 
    context.ExecuteQuery(); 
} 

Die documentBody ist das Feld documentbody von Annotation (Hinweis). Stimmt etwas nicht mit der stream?

+0

So versuchen Sie eine PDF-Datei zu erstellen, indem Bytes von einem documentBody schreiben, die eine einfache Zeichenfolge ist? Wenn Sie ein PDF erstellen möchten, müssen Sie dem hier beschriebenen Format folgen (http://www.adobe.com/content/dam/Adobe/en/technology/pdfs/PDF_Day_A_Look_Inside.pdf). – rene

+0

Dank @rene, aber ich kopierte ein SharePoint-Dokument in CRM Notes mit dem 'Documentbody' als String und ich kann es gut sehen. Gilt es auch weiterhin, ich erstelle kein PDF von Grund auf neu ... –

+0

Neben Ineffizienz gibt es nicht viel falsch mit diesem Code. Wie lautet der Dateiname? Und in diesem Dokument gibt es nur einfachen Text? Aber Sie erwarten, eine PDF zurückgeben? – rene

Antwort

1

Die documentBody ist Base64-codiert in CRM, so dass Sie viele zuerst entschlüsseln müssen, bevor Sie in SharePoint speichern.

Versuchen Sie dies, um die Dokumentendaten zu erhalten.

byte[] data = Convert.FromBase64String(e.Attributes["documentbody"].ToString());

+0

Danke! Es funktionierte! Ich glaube jedoch, dass die Grenzlänge dafür 2.147.483.647 ist. Nun, gemeinsame Dateien überschreiten 2GB nicht, also denke ich, dass dies ausreichen wird. –