用WebClinet实现SharePoint上文档库中文件的上传与下载

微软的SharePoint 提供了强大的文档管理功能,能够创建各种类型的文档库,并对文档进行相应的管理。所以我们的产品也打算将文件用SharePoint来管理,实现文档的共享访问。于是,就产生了用客户端程序访问SharePoint上的文档库来上传下载文件的需求。我就用C#中的WebClient类写了一个实现SharePoint上文件的上传与下载的类。下面是该类的代码,里面有详细的注释。而且,使用起来非常简单,只要传入相应的参数就可以实现向SharePoint上传文件,和从SharePoint下载文件。由于是用WebClient实现的,所以也适用于普通网站的文件上传和下载,当然前提是要有相应的权限。
  1. using System;  
  2. using System.IO;  
  3. using System.Net;  
  4. using System.Collections.Specialized;  
  5.   
  6. namespace SharePointVisitUtilities  
  7. {  
  8.     public static class SharePointFileHelper  
  9.     {  
  10.         // 上传文件  
  11.         //   
  12.         // 参数  
  13.         // 上传的文件在SharePoint上的位置,要上传的本地文件的路径名,用户名,密码,域  
  14.         public static string UploadFile(string strDestUrl, string strFilePathName, string strUserName, string strPassword, string strDomain)  
  15.         {  
  16.             string strResult = "Success";  
  17.   
  18.             try  
  19.             {  
  20.                 string strFileName = Path.GetFileName(strFilePathName);  
  21.                 string strCopiedFilePathName = Path.GetTempPath() + strFileName;  
  22.   
  23.                 // 将文件拷贝到临时文件夹  
  24.                 // 目的是可以在文件在被打开状态下还可以上传  
  25.                 File.Copy(strFilePathName, strCopiedFilePathName, true);  
  26.   
  27.                 // 打开拷贝到临时目录下的文件  
  28.                 FileStream fs = new FileStream(strCopiedFilePathName, FileMode.Open, FileAccess.Read);  
  29.   
  30.                 // 读文件  
  31.                 BinaryReader br = new BinaryReader(fs);  
  32.                 Byte[] filecontents = br.ReadBytes((int)fs.Length);  
  33.   
  34.                 br.Close();  
  35.                 fs.Close();  
  36.   
  37.                 WebClient webclient = CreateWebClient(strUserName, strPassword, strDomain);  
  38.                 
  39.                 // 上传  
  40.                 webclient.UploadData(strDestUrl + strFileName, "PUT", filecontents);  
  41.             }  
  42.             catch (Exception ex)  
  43.             {  
  44.                 strResult = "Failed! " + ex.Message;  
  45.             }  
  46.   
  47.             return strResult;  
  48.         }  
  49.   
  50.         // 下载文件  
  51.         //   
  52.         // 参数  
  53.         // 下载的文件在SharePoint上的位置,文件下载后存放的本地文件夹路径,用户名,密码,域  
  54.         public static string DownloadFile(string strSourceUrl, string strDestFolder, string strUserName, string strPassword, string strDomain)  
  55.         {  
  56.             string strResult = "Success";  
  57.   
  58.             try  
  59.             {  
  60.                 WebClient webclient = CreateWebClient(strUserName, strPassword, strDomain);  
  61.   
  62.                 // 下载  
  63.                 Byte[] filecontents = webclient.DownloadData(strSourceUrl);  
  64.   
  65.                 string strFileName = Path.GetFileName(strSourceUrl);  
  66.   
  67.                 // 创建文件  
  68.                 FileStream fs = new FileStream(strDestFolder + strFileName, FileMode.Create, FileAccess.Write);  
  69.                 // 写文件  
  70.                 fs.Write(filecontents, 0, filecontents.Length);  
  71.                 fs.Close();  
  72.             }  
  73.             catch (Exception ex)  
  74.             {  
  75.                 strResult = "failed! " + ex.Message;  
  76.             }  
  77.   
  78.             return strResult;  
  79.         }  
  80.   
  81.         // 创建WebClient  
  82.         // 参数:用户名,密码,域(用来登陆SharePoint)  
  83.         private static WebClient CreateWebClient(string strUserName, string strPassword, string strDomain)  
  84.         {  
  85.             WebClient webclient = new WebClient();  
  86.   
  87.             if (String.IsNullOrEmpty(strUserName))  
  88.             {  
  89.                 webclient.UseDefaultCredentials = true;  
  90.             }  
  91.             else  
  92.             {  
  93.                 NetworkCredential credential = new NetworkCredential(strUserName, strPassword, strDomain);  
  94.                 webclient.Credentials = credential;  
  95.             }  
  96.   
  97.             return webclient;  
  98.         }  
  99.     }  


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要将文件上传SharePoint,您可以使用SharePoint REST API。以下是使用PHP将文件上传SharePoint的基本步骤: 1. 获取访问令牌或Cookie,以便进行身份验证。可以使用cURL或其他HTTP客户端来发送身份验证请求并接收响应。请注意,您需要具有上传文件的权限。 2. 构建REST API终结点以上传文件。例如,如果您要将文件上传到名为“Documents”的文件夹中,则终结点可能类似于: `https://<your-sharepoint-site>/_api/web/getfolderbyserverrelativeurl('/Documents')/files/add(url='filename.txt',overwrite=true)` 3. 使用cURL或其他HTTP客户端发送HTTP POST请求以上传文件。在请求中,您需要指定文件的二进制内容和文件名,以及其他所需的元数据。 以下是一个示例PHP代码,演示如何使用SharePoint REST API上传文件: ```php <?php // SharePoint site URL $siteUrl = "https://<your-sharepoint-site>"; // File path on local machine $filePath = "path/to/file.txt"; // File name to use on SharePoint $fileName = "file.txt"; // REST API endpoint for uploading files $endpoint = $siteUrl . "/_api/web/getfolderbyserverrelativeurl('/Documents')/files/add(url='" . $fileName . "',overwrite=true)"; // Read file contents $fileContents = file_get_contents($filePath); // Set HTTP headers $headers = array( "Content-Type: application/json;odata=verbose", "Accept: application/json;odata=verbose", "X-RequestDigest: <insert_request_digest_value_here>", "Content-Length: " . strlen($fileContents) ); // Send HTTP POST request with file contents $ch = curl_init($endpoint); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST"); curl_setopt($ch, CURLOPT_POSTFIELDS, $fileContents); curl_setopt($ch, CURLOPT_HTTPHEADER, $headers); $response = curl_exec($ch); curl_close($ch); // Parse JSON response $json = json_decode($response); if ($json && $json->d && $json->d->Name) { echo "File uploaded successfully: " . $json->d->Name; } else { echo "Failed to upload file"; } ?> ``` 请注意,上面的示例代码仅用于演示目的,您需要根据自己的情况进行修改和优化。特别是,您需要替换以下值: - `<your-sharepoint-site>` :您的SharePoint站点URL - `path/to/file.txt` :要上传的本地文件路径 - `file.txt` :要在SharePoint上使用的文件名 - `<insert_request_digest_value_here>` :您的CSRF请求令牌或Cookie 此外,您还需要确保您的PHP服务器已启用cURL扩展,并且您有足够的权限向SharePoint上传文件

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值