using Microsoft.SharePoint;
using System;
using System.Collections.Generic;
using System.Configuration;
using System.Data;
using System.IO;
using System.Linq;
using System.Net;
using System.Text;
using System.Threading.Tasks;
using System.Web;
namespace _20150928
{
class Program
{
static void Main(
string[] args)
{
//Console.WriteLine(HttpUtility.HtmlDecode("<div class="ExternalClass261ED404956E49D289332C8D5DE50427"><p><a href="/sites/00/0001/SiteAssets/Lists/Dialogue/AllItems/TCALProjectList.xlsx"><img width="16" height="16" class="ms-asset-icon ms-rtePosition-4" src="/_layouts/15/images/icxlsx.png" alt="" />TCALProjectList.xlsx</a></p></div>"));
////string str = "http://baidu.com.cn/hello%20I%27am a apple/te%27st.txt";
////Console.WriteLine(str.Length);
//Console.ReadKey();
string mainSite = ConfigurationManager.AppSettings[
"SiteUrl"];
string siteUrl = mainSite +
"sites/" +
"te" +
"/" +
"test" +
"/";
string listName =
"test";
string folderServerRelativeUrl =
"/test/test/";
SPFolder folder =
CreateFolderInList(siteUrl, listName, folderServerRelativeUrl);
folder = GetSubFolderNewSystem(folder,
"test");
SPFolder folderNew =
folder;
string strURL =
"";
//web service get data
string fileName =
"";
Stream stream =
DownLoadAttachment(strURL);
if (stream !=
null)
{
MigrationFromFileToFile(folderNew, fileName, stream);
}
string bodystring =
"<a href=" + folderNew.Url.Remove(
0, mainSite.Length) + fileName +
" ><img src=" +
"/_layouts/15/images/icxlsx.png" +
" />" + fileName +
"</a>";
}
public static SPFolder CreateFolderInList(
string siteUrl,
string listName,
string folderServerRelativeUrl)
{
SPFolder returnFolder =
null;
using (SPSite site =
new SPSite(siteUrl))
using (SPWeb web =
site.OpenWeb())
{
SPList list =
web.Lists[listName];
SPFolder folder =
list.RootFolder;
string[] folderNames = folderServerRelativeUrl.Split(
'/');
foreach (
string folderName
in folderNames)
{
if (!
string.IsNullOrEmpty(folderName))
{
bool exitFolder =
false;
if (folder.SubFolders.Count >
0)
{
foreach (SPFolder subFolder
in folder.SubFolders)
{
if (subFolder.Name.Equals(folderName))
{
exitFolder =
true;
folder =
subFolder;
break;
}
}
}
if (!
exitFolder)
{
//フォルダー作成
folder.SubFolders.Add(folderName);
folder =
folder.SubFolders[folderName];
}
}
}
returnFolder =
folder;
}
return returnFolder;
}
public static SPFolder GetSubFolderNewSystem(SPFolder parentFolder,
string folderName)
{
SPFolder subFolder =
null;
try
{
subFolder =
parentFolder.SubFolders[folderName];
if (!
subFolder.Exists)
{
parentFolder.SubFolders.Add(folderName);
subFolder =
parentFolder.SubFolders[folderName];
}
}
catch
{
parentFolder.SubFolders.Add(folderName);
subFolder =
parentFolder.SubFolders[folderName];
}
return subFolder;
}
public static Stream DownLoadAttachment(
string strURL)
{
Stream stream;
try
{
WebClient myWebClient =
new WebClient();
myWebClient.Credentials =
new NetworkCredential(ConfigurationManager.AppSettings[
"OldUserName"], ConfigurationManager.AppSettings[
"OldUserPassword"], ConfigurationManager.AppSettings[
"OldDomain"]);
byte[] pagedata =
myWebClient.DownloadData(strURL);
stream =
new MemoryStream(pagedata);
myWebClient.Dispose();
return stream;
}
catch (Exception ex)
{
return null;
}
}
public static void MigrationFromFileToFile(SPFolder folderNew,
string fileName, Stream stream)
{
SPFile subFileNew =
null;
byte[] contents =
StreamToBytes(stream);
if (contents !=
null)
{
subFileNew = folderNew.Files.Add(folderNew.Url +
"/" + fileName, contents,
true);
}
}
public static byte[] StreamToBytes(System.IO.Stream stream)
{
int maxsize = Int32.Parse(ConfigurationManager.AppSettings[
"maxSize"].ToString());
using (System.IO.MemoryStream ms =
new System.IO.MemoryStream())
{
byte[] bytes =
new byte[maxsize];
int read;
while ((read = stream.Read(bytes,
0, bytes.Length)) >
0)
{
ms.Write(bytes, 0, read);
if (ms.ToArray().Length >
maxsize)
{
return null;
}
}
return ms.ToArray();
}
}
}
}
转载于:https://www.cnblogs.com/wodegui/p/4852195.html