kution 发表于 2015-9-29 08:23:54

[转]SharePoint Document Library and List – File Upload




There are different ways you can add documents to a doc library or to list
item as an attachment. You could use object model, built-in web service, custom
web service that uses object model, or HTTP PUT method.



  In this post I will be stepping through them in detail. Let us take the
object model approach first. For the sake of simplicity I have created a simple
windows forms app that will push documents in to the document library and
list
  
  Adding documents to a Document Library and updating document
attributes :





   1: private void button1_Click(object sender, EventArgs e)
  

   2:         {
  

   3:             if (openFileDialog1.ShowDialog() == DialogResult.OK)
  

   4:             {
  

   5:               try
  

   6:               {
  

   7:                     FileStream myStream;
  

   8:                     string fullName;
  

   9:                     if ((myStream = (FileStream)openFileDialog1.OpenFile()) != null)
  

10:                     {
  

11:                         fullName = openFileDialog1.FileName;
  

12:                         FileInfo myFileInfo = new FileInfo(fullName);
  

13:                         using (myStream)
  

14:                         {
  

15:                           using (SPSite oSite = new SPSite("http://vslearnmoss/sites/FileUpload"))
  

16:                           {
  

17:                                 using (SPWeb oWeb = oSite.OpenWeb())
  

18:                                 {
  

19:                                     SPFolderCollection oFolders = oWeb.GetFolder("MyDocuments").SubFolders;
  

20:                                     SPFolder oFolder = oFolders["Folder1"];
  

21:                                     SPFileCollection oFileColl = oFolder.Files;
  

22:                                     Hashtable oDocAttribs = new Hashtable { { "Field1", "Value1" }, { "Field2", "Value2" } };
  

23:                                     SPFile oFile = oFileColl.Add(myFileInfo.Name, myStream, oDocAttribs, true);
  

24:                                 }
  

25:                           }
  

26:
  

27:                         }
  

28:                     }
  

29:               }
  

30:               catch (Exception ex)
  

31:               {
  

32:                     MessageBox.Show("Error: " + ex.Message);
  

33:               }
  

34:             }
  

35:
  

36:         }
  
  Adding document attachments to a list item:





   1: private void button1_Click(object sender, EventArgs e)
  

   2:         {
  

   3:             if (openFileDialog1.ShowDialog() == DialogResult.OK)
  

   4:             {
  

   5:               try
  

   6:               {                  
  

   7:                     string fullName;
  

   8:                     fullName = openFileDialog1.FileName;
  

   9:                     FileInfo myFileInfo = new FileInfo(fullName);
  

10:                     byte[] fileData = System.IO.File.ReadAllBytes(fullName);
  

11:
  

12:                     using (SPSite oSite = new SPSite("http://vslearnmoss/sites/FileUpload"))
  

13:                     {
  

14:                         using (SPWeb oWeb = oSite.OpenWeb())
  

15:                         {
  

16:                           SPList oList = oWeb.Lists["MyList"];
  

17:                           SPQuery oQuery = new SPQuery { Query = "0" };
  

18:                           SPListItem oItem = oList.GetItems(oQuery).Add();
  

19:                           oItem["Title"] = textBox1.Text;
  

20:                           SPAttachmentCollection attachments = oItem.Attachments;
  

21:                           attachments.Add(myFileInfo.Name, fileData);
  

22:                           oItem.Update();
  

23:                         }
  

24:                     }
  

25:               }
  

26:               catch (Exception ex)
  

27:               {
  

28:                     MessageBox.Show("Error: " + ex.Message);
  

29:               }
  

30:
  

31:             }
  

32:         }
  
  One thing to note when accessing the list for creating a new list item is to
be mindful that when SPList.Items.Add is called it fetches all the items before
creating a new item, one way to avoid is to make a blank query that fetches zero
results and add a new list item to the collection.
  SPQuery oQuery = new SPQuery { Query = "0" };
  SPListItem oItem = oList.GetItems(oQuery).Add();
  
  You can look for more info about adding list item efficiently in this article by Rob Garret.
  In the next part of this article, I will show you how to utilize web services
or HTTP PUT method to push documents into the SharePoint document library.
页: [1]
查看完整版本: [转]SharePoint Document Library and List – File Upload