下面讲解的是利用sharepoint 自带的web service服务将文件上传至sharepoint站点的文件库,本机上可以不安装sharepoint
实现文件上传需要两个服务:
1.实现SharePoint站点上的文件夹的自动创建,需要用到的服务为:Dws
2.实现文件上传的服务为:Copy
实现步骤:
1.引入上面的两个web服务,http://web site/_vti_bin/Copy.asmx 和 http://web site/_vti_bin/dws.asmx
将web site 改為sharePoint 站點網址(下面舉例中的紅色區域)
举例:若是你的SharePoint站点网址为:http://sharePointTest,
则这里需要引入的web 服务为:http://sharePointTest/_vti_bin/Copy.asmx和 http://sharePointTest/_vti_bin/dws.asm
2. 程式代碼
/// <summary>
/// 實現文件上傳到SharePoint站點
/// </summary>
/// <param name="filePath">上傳文件保存到本地的路徑</param>
private static void UploadSharePoint(string fileLoad)
{
string userName = "站點的用戶名";
string password = "站點的密碼";
string domain = "站點的域名";
// 創建Dws 對象
SimSharePointDws.Dws myDws = new SimSharePointDws.Dws();
// 設置權限
myDws.Credentials = new System.Net.NetworkCredential(userName, password, domain);
// 獲取服務的url,需注意的是一直到你的文件庫的上一級
myDws.Url = "http://sharePointTest/DP/Construction/_vti_bin/dws.asmx";
// 創建文件夾 比如你的文件庫為TestLibrary,需要創建的文件夾為20121205,則路徑為:TestLibrary\20121205
var resultCreate = myDws.CreateFolder("路徑");
// 获取文件二进制
byte[] filebyte = StreamFile(fileLoad);
// 上传文件
UploadFile(filebyte, desPath, userName, password, domain);
}
/// <summary>
/// 讀取文件流
/// </summary>
/// <param name="filename">要讀取的文件路徑</param>
/// <returns></returns>
public byte[] StreamFile(string filename)
{
FileStream fs = new FileStream(filename, FileMode.Open, FileAccess.Read);
byte[] ImageData = new byte[fs.Length];
fs.Read(ImageData, 0, System.Convert.ToInt32(fs.Length));
fs.Close();
return ImageData;
}
/// <summary>
/// 實現文件上傳
/// </summary>
/// <param name="fileData">文件二進制</param>
/// <param name="desPath">文件路徑</param>
/// <param name="userName">站點用戶</param>
/// <param name="password">密碼</param>
/// <param name="domain">域</param>
private static void UploadFile(byte[] fileData, string desPath, string userName, string password, string domain)
{
// 實例化Copy對象
var copy = new Web_Reference_Name.Copy
{
Url = "http://sharePointTest/_vti_bin/copy.asmx",
Credentials = new NetworkCredential(userName, password, domain)
};
// 文件存放的路徑
string destinationUrl = desPath;
string[] destinationUrls = { destinationUrl };
var info1 = new Web_Reference_Name.FieldInformation
{
DisplayName = "Title",
InternalName = "Title",
Type = Web_Reference_Name.FieldType.Text,
Value = "New Title"
};
Web_Reference_Name.FieldInformation[] info = { info1 };
var copyResult = new Web_Reference_Name.CopyResult();
Web_Reference_Name.CopyResult[] copyResults = { copyResult };
// 調用自帶的寫入方法
copy.CopyIntoItems(destinationUrl, destinationUrls, info, fileData, out copyResults);
}