c# - Sharepoint 项目文件替换

标签 c# sharepoint

您好,我一直在玩一个与 Sharepoint 列表中的项目有关的文件。此项目是我进行更改然后转换为 PDF 的文档。我目前上传此 PDF 并用它替换原始文档。到目前为止的一切似乎都运行良好。但是,当我用新文件替换文件时,当它是文档文件时,我看不到该文件的旧版本。如果这不可能,我可以灵活地复制项目,然后再用新文件替换旧文件。这样就有了可用的原始文档文件和新版本。

我目前一直在玩 item.CopyTo() 试图复制该项目但没有成功。下面是我用来替换文件的代码(以及我正在处理的复制项目的代码):

string newFileName = Path.GetFileNameWithoutExtension(file.Name) + ".old.docx";
string url = item.Web.Url + "/" + Path.GetDirectoryName(item.Url) + "\\" + newFileName;
item.CopyTo(url); //This is where my code crashes...

using (BinaryReader binReader = new BinaryReader(File.Open(tempSavePath, FileMode.Open)))
{
    byte[] fBin;
    string fileName = Path.GetFileNameWithoutExtension(file.Name) + ".pdf";

    file.CheckOut();

    fBin = binReader.ReadBytes((int)binReader.BaseStream.Length);
    item["Title"] = fileName;
    file.SaveBinary(fBin);
    file.MoveTo(Path.GetDirectoryName(item.Url) + "\\" + fileName, true);
    file.Item["Nombre"] = fileName;
    file.Update();

    file.CheckIn("");
}

我得到的错误是:无法在指定的目的地创建元素。请确保该目录存在并且您具有所需的权限。 (我得到的实际错误是西类牙语,所以我翻译了它,可能不是英文显示的确切消息)

显示的实际消息(西类牙语):No se puede crear un elemento en el destino solicitado。 Compruebe que la carpeta existe y que tiene permiso para editarla.

就我所关心的权限而言,这不是问题,而且该目录显然存在,因为这是当前项目目录...如果有任何其他方法可以解决这个问题,请随时发布,因为这可能不是最好的解决方案... 提前致谢!

编辑

似乎该文件作为文档进行了版本控制,但扩展名仍为 PDF 有什么想法可以使版本控制保持原始文件的扩展名吗?

最佳答案

就 CopyTo 方法而言,Path.GetDirectoryName 返回反斜杠,CopyTo 函数似乎无法正确解释这一点,因此将“\”替换为“/”可修复错误...

扩展问题我找不到解决方案如果有人知道解决方案请贡献谢谢!

关于c# - Sharepoint 项目文件替换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10385162/

相关文章:

c# - 描述国际象棋规则的推荐数据格式

c# - ASP.NET MVC 中 htmlAttributes 的匿名类和 IDictionary<string,object> 之间的区别?

sharepoint - 复制 SharePoint 2010 网站集/Web 应用程序

javascript - 使用 JavaScript 查询 SharePoint 列表

asp.net - Sharepoint Online 禁止 WebRequest

SharePoint : How to check for null with a CAML Query?

c# - 如何读取 MVC Controller 方法中的 web.config 设置并在 angularjs View 、 Controller 和服务中访问它们?

c# - 正则表达式跳过匹配

sharepoint - SharePoint 列表在基于 SOA 的企业中是邪恶的吗?

UserControl 的自定义 Text 属性的 C# 自定义 TextChanged 事件处理程序?