Microsoft KB Archive/312541

= How to use PKMCDO to programmatically upload a document to a folder in Visual C# =

Article ID: 312541

Article Last Modified on 11/29/2007

-

APPLIES TO


 * Microsoft Visual C# 2005 Express Edition
 * Microsoft Visual C# .NET 2003 Standard Edition
 * Microsoft Visual C# .NET 2002 Standard Edition
 * Microsoft SharePoint Portal Server 2001

-



This article was previously published under Q312541



Caution ADO and ADO MD have not been fully tested in a Microsoft .NET Framework environment. They may cause intermittent issues, especially in service-based applications or in multithreaded applications. The techniques that are discussed in this article should only be used as a temporary measure during migration to ADO.NET. You should only use these techniques after you have conducted complete testing to make sure that there are no compatibility issues. Any issues that are caused by using ADO or ADO MD in this manner are unsupported. For more information, see the following article in the Microsoft Knowledge Base:

840667 You receive unexpected errors when using ADO and ADO MD in a .NET Framework application



SUMMARY
This article describes how to use Microsoft Publishing and Knowledge Management Collaboration Data Objects (PKMCDO) for Microsoft Web Storage System to upload a document to a folder in the document library on a Microsoft SharePoint Portal Server workspace by using Microsoft Visual C#.



MORE INFORMATION
To use PKMCDO to upload a document to a folder in the document library on a SharePoint Portal Server workspace, follow these steps:  Start Microsoft Visual Studio .NET or Microsoft Visual Studio 2005. On the File menu, point to New, and then click Project. Under Project Types, select Visual C# Projects.

Note In Visual Studio 2005, click Visual C# under Project Types. Under Templates, select Console Application, and then click OK.

By default, Class1.cs is created in Visual Studio .NET. Program.cs is created in Visual Studio 2005. Add a reference to the Microsoft PKMCDO for Microsoft Web Storage System library. To do so, follow these steps:  On the Project menu, click Add Reference.</li> Click the COM tab, locate Microsoft PKMCDO for Microsoft Web Storage System Library, and then click Select.

Note In Visual Studio 2005, you do not have to click Select.</li> In the Add References dialog box, click OK.</li> If you are prompted to generate wrappers for the libraries that you selected, click Yes.</li></ol> </li> Repeat step 5 to add a reference to the Microsoft ActiveX Data Objects 2.6 Library.</li>  Insert the following code in the existing class where you see the comment that says &quot;TODO: Add code to start application here:&quot; // TODO: Add code to start application here.

PKMCDO.KnowledgeDocument oDoc = new PKMCDO.KnowledgeDocument; PKMCDO.KnowledgeFolder oFolder = new PKMCDO.KnowledgeFolder; ADODB._Stream oWrkStream; //TODO: Change the following variables to reflect your SharePoint Portal Server environment. String sHref=&quot;http://<ServerName>/<WorkspaceName>/documents/testdoc.txt&quot;; String sFilePath = &quot;c:\\testdoc.txt&quot; ; String sAuthor = &quot;AuthorName&quot;; String sTitle = &quot;TestDoc.txt&quot;; String sDesc = &quot;Test Description&quot;;

Object vEmpty = Missing.Value;

oWrkStream = (ADODB._Stream )oDoc.OpenStream(       vEmpty,        PKMCDO.EnumKnowledge_StreamOpenSourceType.pkmOpenStreamUnspecified,        &quot;&quot;,        PKMCDO.ConnectModeEnum.adModeReadWrite,        &quot;&quot;,        &quot;&quot;); oWrkStream.Type = ADODB.StreamTypeEnum.adTypeBinary; oWrkStream.SetEOS; oWrkStream.LoadFromFile(sFilePath); oWrkStream.Flush; oDoc.Author = sAuthor; oDoc.Title = sTitle; oDoc.Description = sDesc ; oDoc.DataSource.SaveTo (       sHref,        null,        PKMCDO.ConnectModeEnum.adModeReadWrite,        PKMCDO.RecordCreateOptionsEnum.adCreateNonCollection,        PKMCDO.RecordOpenOptionsEnum.adOpenSource,        &quot;&quot;,         &quot;&quot;); oDoc = null; oWrkStream= null; </li>  Insert the following statement after line 1 in Class1.cs: using System.Reflection; </li> Search for TODO in the code, and then modify the code for your environment.</li> Press F5 to build and to run the program.</li> Load your SharePoint Portal Server folder in Microsoft Internet Explorer, and then make sure that you can see the document.</li></ol>

<div class="references_section">