Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/heroku/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Sharepoint项目文件替换_C#_Sharepoint - Fatal编程技术网

C# Sharepoint项目文件替换

C# Sharepoint项目文件替换,c#,sharepoint,C#,Sharepoint,嗨,我一直在玩一个文件,它属于Sharepoint列表中的一个项目。此项目是一个文档,我对其进行了更改,然后将其转换为PDF。我目前上传了这个PDF,并用它替换了原始文档。那里的一切似乎都运转良好。但是,当我用新文件替换该文件时,我无法看到该文件作为文档文件时的旧版本。如果这是不可能的,我已经被赋予了灵活性,以复制项目之前,更换新的旧文件之一。这样就有了可用的原始文档文件和新版本 我目前一直在玩item.CopyTo(),试图复制该项目,但未成功。下面是我用来替换文件的代码(以及我用来复制项目的

嗨,我一直在玩一个文件,它属于Sharepoint列表中的一个项目。此项目是一个文档,我对其进行了更改,然后将其转换为PDF。我目前上传了这个PDF,并用它替换了原始文档。那里的一切似乎都运转良好。但是,当我用新文件替换该文件时,我无法看到该文件作为文档文件时的旧版本。如果这是不可能的,我已经被赋予了灵活性,以复制项目之前,更换新的旧文件之一。这样就有了可用的原始文档文件和新版本

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

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

显示的实际信息(西班牙文):无任何要求。现有地毯的压缩和编辑许可

只要Im接收权限不是问题,而且目录显然存在,因为这是当前的项目目录。。。如果有任何其他方法可以做到这一点,请随时发布,因为这可能不是最好的解决方案。。。提前谢谢

编辑


文件的版本似乎是以文档的形式进行的,但是扩展名仍然是PDF。我知道如何使版本控制保持原始文件的扩展名吗?

只要CopyTo方法通过路径。GetDirectoryName返回反斜杠,而且CopyTo函数似乎无法正确解释这一点,因此使用字符串。替换“\”到“/”修复了错误


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

只要CopyTo方法通过路径。GetDirectoryName返回反斜杠,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("");
}