Sharepoint项目文件替换

时间:2012-04-30 14:12:59

标签: c# sharepoint

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

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

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("");
}

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

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

至于我认可的权限不是问题而且目录显然存在,因为那是当前的项目目录...如果还有其他方法可以解决这个问题,请随意发布,因为这可能不是最佳解决方案...提前致谢!

修改

似乎该文件被版本化为文档但是扩展名仍然是PDF任何想法我如何使版本控制保留原始文件的扩展名?

1 个答案:

答案 0 :(得分:0)

就CopyTo方法而言,Path.GetDirectoryName返回反斜杠,而且似乎CopyTo函数没有正确解释这个,所以“。”的字符串替换“/”来修复错误......

扩展问题我无法找到解决方案,如果有人知道解决方案,请提供帮助谢谢!