2

こんにちは、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 のままです バージョン管理で元のファイルの拡張子を保持する方法はありますか?

4

1 に答える 1

0

CopyTo メソッドに関する限り、Path.GetDirectoryName はバックスラッシュを返し、CopyTo 関数はこれを正しく解釈しないように見えるため、「\」を「/」に String.Replace するとエラーが修正されます...

誰かが解決策を知っている場合、私は解決策を見つけることができなかった拡張機能の問題に貢献してくださいありがとう!

于 2012-04-30T17:47:57.650 に答える