rgbnj 发表于 2015-9-25 13:55:17

利用客户端向SharePoint文档库上传文档

  SharePoint 提供了强大的文档管理功能,能够创建各种类型的文档库,并对文档进行相应的管理。但是,对于用户来说,每次上传下载文档都要登录到网点,稍嫌麻烦,遇到网速慢的时候,更为恼火。那么能否用客户端的代码上传或下载文档呢?答案是肯定的,下面的一段代码就是在本地创建一个Http Client程序,来处理服务器文档库文件。


1using System;
2using System.Collections.Generic;
3using System.Text;
4using System.IO;
5using System.Web;
6using System.Net;
7using System.Data;
8using System.Diagnostics;
9
10namespace com.sinoair.local
11{
12    public static class FileHelper
13    {
14      public static string UploadFile(string destUrl, string content)
15      {
16            try
17            {
18                Uri destUri = new Uri(destUrl);
19                MemoryStream inStream = new MemoryStream(Encoding.UTF8.GetBytes(content));
20                WebRequest req = WebRequest.Create(destUri);
21                req.Method = "PUT";
22                req.Headers.Add("Overwrite", "T");
23                req.Timeout = System.Threading.Timeout.Infinite;
24                req.Credentials = System.Net.CredentialCache.DefaultNetworkCredentials;
25                Stream outStream = req.GetRequestStream();
26                string status = CopyStream(inStream, outStream);
27                if (status == "success")
28                {
29                  outStream.Close();
30                  WebResponse ores = req.GetResponse();
31                  return "success";
32                }
33                else
34                {
35                  return status;
36                }
37            }
38            catch (WebException we)
39            {
40                return we.Message;
41            }
42            catch (System.Exception ee)
43            {
44                return ee.Message;
45            }
46      }
47
48      public static string UploadFile(string destUrl, string content, string username, string password)
49      {
50            try
51            {
52                Uri destUri = new Uri(destUrl);
53                MemoryStream inStream = new MemoryStream(Encoding.UTF8.GetBytes(content));
54                //FileStream inStream = File.OpenRead(sourcePath);            
55                WebRequest req = WebRequest.Create(destUri);
56                req.Method = "PUT"; req.Headers.Add("Overwrite", "T");
57                req.Timeout = System.Threading.Timeout.Infinite;
58                req.Credentials = new NetworkCredential(username, password, "sinoair");
59                Stream outStream = req.GetRequestStream();
60                string status = CopyStream(inStream, outStream);
61                if (status == "success")
62                {
63                  outStream.Close();
64                  WebResponse ores = req.GetResponse();
65                  return "success";
66                }
67                else
68                {
69                  return status;
70                }
71            }
72            catch (WebException we)
73            {
74                return we.Message;
75            }
76            catch (System.Exception ee)
77            {
78                return ee.Message;
79            }
80      }
81      public static string DownloadFile(string sourceUrl, string destFolder)
82      {
83            try
84            {
85                System.Uri sourceUri = new System.Uri(sourceUrl);
86                HttpWebRequest req = (HttpWebRequest)WebRequest.Create(sourceUri);
87                req.Method = "GET";
88                req.Timeout = System.Threading.Timeout.Infinite;
89                req.Credentials = CredentialCache.DefaultCredentials;
90                req.AllowAutoRedirect = true; WebResponse res = req.GetResponse();
91                Stream inStream = res.GetResponseStream();
92                FileStream fs = new FileStream(destFolder, FileMode.OpenOrCreate);
93                string status = CopyStream(inStream, fs);
94                if (status == "success")
95                {
96                  inStream.Close();
97                  fs.Close();
98                  fs.Dispose();
99                  return "success";
100                }
101                else
102                {
103                  inStream.Close();
104                  fs.Close();
105                  fs.Dispose();
106                  return status;
107                }
108            }
109            catch (WebException we)
110            {
111                return we.Message;
112            }
113            catch (System.Exception ee)
114            {
115                return ee.Message;
116            }
117      }
118
119      public static string DownloadFile(string sourceUrl, string destFolder, string username, string password)
120      {
121            try
122            {
123                System.Uri sourceUri = new System.Uri(sourceUrl);
124                HttpWebRequest req = (HttpWebRequest)WebRequest.Create(sourceUri);
125                req.Method = "GET"; req.Timeout = System.Threading.Timeout.Infinite;
126                req.Credentials = new System.Net.NetworkCredential(username, password, "sinoair");
127                req.AllowAutoRedirect = true;
128                WebResponse res = req.GetResponse();
129                Stream inStream = res.GetResponseStream();
130                FileStream fs = new FileStream(destFolder, FileMode.OpenOrCreate);
131                string status = CopyStream(inStream, fs);
132                if (status == "success")
133                {
134                  inStream.Close();
135                  fs.Close();
136                  fs.Dispose();
137                  return "success";
138                }
139                else
140                {
141                  inStream.Close();
142                  fs.Close();
143                  fs.Dispose();
144                  return status;
145                }
146            }
147            catch (WebException we)
148            {
149                return we.Message;
150            }
151            catch (System.Exception ee)
152            {
153                return ee.Message;
154            }
155      }
156
157      private static string CopyStream(Stream inStream, Stream outStream)
158      {
159            try
160            {
161                byte[] buffer = new byte;
162                for (; ; )
163                {
164                  int numBytesRead = inStream.Read(buffer, 0, buffer.Length);
165                  if (numBytesRead <= 0)
166                        break;
167                  outStream.Write(buffer, 0, numBytesRead);
168                }
169                inStream.Close();
170                return "success";
171            }
172            catch (System.Exception ee)
173            {
174                return ee.Message;
175            }
176      }
177    }
178}  假定我们有SharePoint服务器,名为portal,下面建了一个DocLib1的文档库,则该文档库的地址为http://portal/DocLib1 ,如果我们想将本地文件上传到文档库中,文件名为test.txt,即可调用FileHelper.UploadFile("http://portal/DocLib1/test.txt", "Text File Content")。对于文档库中的文件夹(例如Folder1),其对应的网址为http://portal/DocLib1/Folder1,则上传的参数相应改为http://portal/DocLib1/Folder1/test.txt 即可。
页: [1]
查看完整版本: 利用客户端向SharePoint文档库上传文档