2012-04-30 56 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

擴展問題我找不到解決方案,如果有人知道解決方案,請捐助謝謝!