2012-04-30 55 views
2

嗨,我一直在玩与Sharepoint列表中的项目有关的文件。这个项目是一个文件,我做了改变,然后转换为PDF。我目前上传这个PDF文件,并用它替换原始文件。一切都到了那里似乎工作正常。但是,当我用新文件替换文件时,当它是文档文件时,我无法看到此文件的旧版本。如果这是不可能的,我已经赋予了灵活性来复制该项目,然后将旧文件替换为新文件。这样就有一个可用的原始文档文件和新版本。Sharepoint项目文件替换

我目前一直在玩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未ELEMENTO EN EL DESTINO solicitado 。 Compruebe que la carpeta existe y que tiene permiso para editarla。

据我看来,权限不是问题,目录明显存在,因为这是目前的项目目录...如果有任何其他方式去关于此请随时张贴,因为这可能不是最好的解决方案...在此先感谢!

编辑

看来,该文件版本的文件,不过扩展仍是PDF任何想法如何,我可以使版本保持原来文件的扩展名?

回答

0

至于CopyTo方法那张Path.GetDirectoryName返回反斜杠,它似乎CopyTo从功能犯规解释这也是正确的的“\”为“/”修正错误...与string.replace

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