且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

如何从C#或SSIS脚本的共享点中删除或仅删除文本文件?

更新时间:2023-12-05 10:44:10

按照此链接进行所有共享点报告DML操作 http://www.c-sharpcorner.com/tags/DDL-and-DML-操作--Sharepoint [ ^ ]
follow this link to all share point report DML operations http://www.c-sharpcorner.com/tags/DDL-and-DML-Operations--Sharepoint[^]


//脚本代码,用于从共享点下载附件以及删除特定文件的附件(例如仅.txt文件或仅.csv等) )
public void Main()
{
试试
{
//SPSecurity.RunWithElevatedPrivileges(delegate()
//{
字符串myFileExtension =";
使用(SPSite oSite = new SPSite("http://servername/sharepointname/"))
{
使用(SPWeb oWeb = oSite.OpenWeb())
{
SPList列表= oWeb.Lists ["listName"];

SPListItemCollection oItemCol = list.GetItems();
foreach(oItemCol中的SPListItem oItem)
{
字符串strID = Convert.ToString(oItem ["ID"]);
SPFolder文件夹= oWeb.Folders [列表"] .SubFolders ["ListName"].SubFolders [附件"] .SubFolders [strID];
foreach(SPFile文件位于folder.Files中)
{
FileInfo myFileinfo =新的FileInfo(file.Name);
myFileExtension = myFileinfo.Extension.ToLower();
//MessageBox.Show("myFileExtension:"+ myFileExtension);
字符串sFileextension =(Dts.Variables ["fileformat"].Value.ToString().Trim()).ToLower();
如果(myFileExtension.Equals(sFileextension))
{
WebClient client1 =新的WebClient();
client1.Credentials = System.Net.CredentialCache.DefaultCredentials;
FileStream outStream =新的FileStream(@"C:\\ destination_folder \" + file.Name,FileMode.Create);
byte [] fileData = file.OpenBinary();
outStream.Write(fileData,0,fileData.Count());
outStream.Close();
oItem.Attachments.Delete(file.Name);
oItem.Update();
}

}
}
}
}
//});
}
catch(异常e)
{
MessageBox.Show(e.Message);
}
Dts.TaskResult =(int)ScriptResults.Success;
}
}


//只有管理员可以执行此代码,bcz共享点列表和附件分配给了不同的用户,因为user,用户无法从共享点下载所有附件.
// script code for downloading attachments from share point as well as remove attachments of particular files (like only .txt files , or only .csv .. etc)
public void Main()
{
try
{
//SPSecurity.RunWithElevatedPrivileges(delegate()
//{
String myFileExtension = "";
using (SPSite oSite = new SPSite("http://servername/sharepointname/"))
{
using (SPWeb oWeb = oSite.OpenWeb())
{
SPList list = oWeb.Lists["listName"];

SPListItemCollection oItemCol = list.GetItems();
foreach (SPListItem oItem in oItemCol)
{
string strID = Convert.ToString(oItem["ID"]);
SPFolder folder = oWeb.Folders["Lists"].SubFolders["ListName"].SubFolders["Attachments"].SubFolders[strID];
foreach (SPFile file in folder.Files)
{
FileInfo myFileinfo = new FileInfo(file.Name);
myFileExtension = myFileinfo.Extension.ToLower();
//MessageBox.Show("myFileExtension:" + myFileExtension);
String sFileextension = (Dts.Variables["fileformat"].Value.ToString().Trim()).ToLower();
if (myFileExtension.Equals(sFileextension))
{
WebClient client1 = new WebClient();
client1.Credentials = System.Net.CredentialCache.DefaultCredentials;
FileStream outStream = new FileStream(@"C:\\destination_folder\" + file.Name, FileMode.Create);
byte[] fileData = file.OpenBinary();
outStream.Write(fileData, 0, fileData.Count());
outStream.Close();
oItem.Attachments.Delete(file.Name);
oItem.Update();
}

}
}
}
}
//});
}
catch (Exception e)
{
MessageBox.Show(e.Message);
}
Dts.TaskResult = (int)ScriptResults.Success;
}
}


// only administrator can executes this code, bcz sharepoint list and attachments are assigned to different users, as user , user can''t download all attachments from share point.