私はこれで頭がいっぱいです。SharePoint ドキュメント ライブラリに保存されているドキュメントを作成および編集するユーザー インターフェイスがあります。トリックの部分は、ユーザーが問題なくドキュメントを更新できるようにする必要があることSPFile.SaveBinary()
です。
これにより、ファイルの内容は間違いなく更新されますが、なぜか古いファイル名と古い拡張子が残っています。これは問題です。アイテムのIDがURLで参照されているため、リストアイテムを削除して再度追加することも解決策ではありません。
私の質問は、SPFile アイテムの拡張子とファイル名のメタデータを更新するにはどうすればよいですか?
これまでのところ、オブジェクト ライブラリを使用する試みはすべて失敗しました。以下のフィールドを更新しようとしましたが、成功していません。これを行うには、もっと簡単な方法が必要なようです。
SPFile file = item.File;
file.Item[SPBuiltInFieldId.FileLeafRef] = resolvedFileName;
file.Item[SPBuiltInFieldId.FileRef] = "/File/" + resolvedFileName;
file.Item[SPBuiltInFieldId.BaseName] = System.IO.Path.GetFileNameWithoutExtension(resolvedFileName);
file.Item["Name"] = System.IO.Path.GetFileNameWithoutExtension(resolvedFileName);
file.SaveBinary(conduitFile);
file.Update();
[編集] - これが私の実用的なソリューションです。
SPFile file = item.File;
string resolvedFileName = item.ID.ToString() + "-" + conduitFileName;
item["Title"] = resolvedFileName;
file.SaveBinary(conduitFile);
file.MoveTo(item.ParentList.RootFolder.Url + "/" + resolvedFileName, true);
file.Item["Name"] = resolvedFileName;
file.Update();