gpt4 book ai didi

c# - 通过客户端对象模型重命名 SharePoint 中的文件时,如果中间有一个点,文件名将被修剪

转载 作者:太空狗 更新时间:2023-10-29 22:18:56 31 4
gpt4 key购买 nike

我使用 SharePoint 客户端对象模型编写了一个小型应用程序,它重命名 SharePoint 2010 文档库中的所有文件。一切正常,除非文件名应该在中间某处包含一个点,它会被修剪,从点开始。

例如,当新文件名应为“my file name”时,它在 SharePoint 中以“my fi”结尾。顺便说一句,文件的扩展名(在我的例子中是 .pdf)保持正确。

这是我正在做的(一般情况下):

ClientContext clientContext = new ClientContext("http://sp.example.com/thesite);
List list = clientContext.Web.Lists.GetByTitle("mydoclibrary");
ListItemCollection col = list.GetItems(CamlQuery.CreateAllItemsQuery());
clientContext.Load(col);
clientContext.ExecuteQuery();

foreach (var doc in col)
{
if (doc.FileSystemObjectType == FileSystemObjectType.File)
{
doc["FileLeafRef"] = "my fi.le name";
doc.Update();
clientContext.ExecuteQuery();
}
}

当我通过浏览器手动重新命名 SharePoint 中的文件(编辑属性)时,一切正常:圆点保留,文件名根本不会被修剪。

"FileLeafRef" 是错误的属性吗?知道这里的原因是什么吗?

最佳答案

使用 FileLeafRef 属性可以更新文件名但没有扩展名。

如何使用 SharePoint CSOM 重命名文件

使用File.MoveTo method重命名文件:

public static void RenameFile(ClientContext ctx,string fileUrl,string newName)
{
var file = ctx.Web.GetFileByServerRelativeUrl(fileUrl);
ctx.Load(file.ListItemAllFields);
ctx.ExecuteQuery();
file.MoveTo(file.ListItemAllFields["FileDirRef"] + "/" + newName, MoveOperations.Overwrite);
ctx.ExecuteQuery();
}

用法

using (var ctx = new ClientContext(webUrl))
{
RenameFile(ctx, "/Shared Documents/User Guide.docx", "User Guide 2013.docx");
}

关于c# - 通过客户端对象模型重命名 SharePoint 中的文件时,如果中间有一个点,文件名将被修剪,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26649853/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com