用WebClinet實現SharePoint上文件庫中檔案的上傳與下載
阿新 • • 發佈:2018-12-21
微軟的SharePoint 提供了強大的文件管理功能,能夠建立各種型別的文件庫,並對文件進行相應的管理。所以我們的產品也打算將檔案用SharePoint來管理,實現文件的共享訪問。於是,就產生了用客戶端程式訪問SharePoint上的文件庫來上傳下載檔案的需求。我就用C#中的WebClient類寫了一個實現SharePoint上檔案的上傳與下載的類。下面是該類的程式碼,裡面有詳細的註釋。而且,使用起來非常簡單,只要傳入相應的引數就可以實現向SharePoint上傳檔案,和從SharePoint下載檔案。由於是用WebClient實現的,所以也適用於普通網站的檔案上傳和下載,當然前提是要有相應的許可權。
using System; using System.IO; using System.Net; using System.Collections.Specialized; namespace SharePointVisitUtilities { public static class SharePointFileHelper { // 上傳檔案 // // 引數 // 上傳的檔案在SharePoint上的位置,要上傳的本地檔案的路徑名,使用者名稱,密碼,域 public static string UploadFile(string strDestUrl, string strFilePathName, string strUserName, string strPassword, string strDomain) { string strResult = "Success"; try { string strFileName = Path.GetFileName(strFilePathName); string strCopiedFilePathName = Path.GetTempPath() + strFileName; // 將檔案拷貝到臨時資料夾 // 目的是可以在檔案在被開啟狀態下還可以上傳 File.Copy(strFilePathName, strCopiedFilePathName, true); // 開啟拷貝到臨時目錄下的檔案 FileStream fs = new FileStream(strCopiedFilePathName, FileMode.Open, FileAccess.Read); // 讀檔案 BinaryReader br = new BinaryReader(fs); Byte[] filecontents = br.ReadBytes((int)fs.Length); br.Close(); fs.Close(); WebClient webclient = CreateWebClient(strUserName, strPassword, strDomain); // 上傳 webclient.UploadData(strDestUrl + strFileName, "PUT", filecontents); } catch (Exception ex) { strResult = "Failed! " + ex.Message; } return strResult; } // 下載檔案 // // 引數 // 下載的檔案在SharePoint上的位置,檔案下載後存放的本地資料夾路徑,使用者名稱,密碼,域 public static string DownloadFile(string strSourceUrl, string strDestFolder, string strUserName, string strPassword, string strDomain) { string strResult = "Success"; try { WebClient webclient = CreateWebClient(strUserName, strPassword, strDomain); // 下載 Byte[] filecontents = webclient.DownloadData(strSourceUrl); string strFileName = Path.GetFileName(strSourceUrl); // 建立檔案 FileStream fs = new FileStream(strDestFolder + strFileName, FileMode.Create, FileAccess.Write); // 寫檔案 fs.Write(filecontents, 0, filecontents.Length); fs.Close(); } catch (Exception ex) { strResult = "failed! " + ex.Message; } return strResult; } // 建立WebClient // 引數:使用者名稱,密碼,域(用來登陸SharePoint) private static WebClient CreateWebClient(string strUserName, string strPassword, string strDomain) { WebClient webclient = new WebClient(); if (String.IsNullOrEmpty(strUserName)) { webclient.UseDefaultCredentials = true; } else { NetworkCredential credential = new NetworkCredential(strUserName, strPassword, strDomain); webclient.Credentials = credential; } return webclient; } } }