1
数百のPDFファイルをSharePoint 2013ライブラリに転送するCSOMプログラムがあります。一度、転送されたファイルの1つが破損し、開くことができません。ソースファイルは良好で、他のライブラリに転送された後も同じファイルを開くことができますが、ランダムなライブラリでは破損します。 ライブラリをループして、壊れたファイルを見つけて削除したいのですが、ファイルが破損している場合はどうすればCSOMを使用して知ることができますか?私はループして、File.OpenBinaryStream()を使用してみましたが、破損したファイルで成功します。以下は、ライブラリを読み込んでファイルをループするコードです。任意の提案をいただければ幸いです。CSOMを使用してSharePoint 2013 ListItemCollectionで壊れたファイルを見つける方法
using (ClientContext destContext = new ClientContext(clientSite.Value))
{
destContext.AuthenticationMode = ClientAuthenticationMode.FormsAuthentication;
destContext.FormsAuthenticationLoginInfo = new FormsAuthenticationLoginInfo(ClientSiteUsername, ClientSitePassword);
// get the new list
Web destWeb = destContext.Web;
ListCollection lists = destWeb.Lists;
List selectedList = lists.GetByTitle(clientLibraryName);
destContext.Load(lists);
destContext.Load(selectedList);
ListItemCollection clientCurrentItemsList = selectedList.GetItems(CamlQuery.CreateAllItemsQuery());
destContext.Load(clientCurrentItemsList,
eachItem => eachItem.Include(
item => item,
item => item["ID"],
item => item["FileLeafRef"]));
try
{
destContext.ExecuteQuery();
}
catch (Exception ex)
{
log.Warn(String.Format("Error in VerifyClientDocuments. Could not read client library: {0}", clientSite.Value), ex);
continue;
}
foreach (ListItem item in clientCurrentItemsList)
{
try
{
item.File.OpenBinaryStream();
}
catch (Exception ex)
{
var val = ex.Message;
//delete here
}
}
}