1

我正在编写一个使用字节缓冲区传输大文件的 WCF 服务。我在使用 Word docx 时遇到问题。我可以复制文件,但是当我打开它时,出现“文件损坏”错误,然后它询问我是否要挽救它。如果我说“是”,它会很好地挽救它。

如何复制word文档?我试过改变编码和我在网上能找到的一切,没有任何帮助。

这是我的客户:

FileInfo SourceFile = new FileInfo(textBoxPath.Text);
LargeFileContractClient localClient = new LargeFileContractClient();

LargeFileInfo LocalLargeFileInfo = new LargeFileInfo();
LocalLargeFileInfo.TransactionID = Guid.NewGuid();
LocalLargeFileInfo.FileName = SourceFile.Name;

LargeFileInfo localLargeFileResponse = new LargeFileInfo();

using (BinaryReader SourceStream = new BinaryReader(File.Open(SourceFile.FullName, FileMode.Open), Encoding.Unicode))
{
   while (SourceStream.BaseStream.Position < SourceStream.BaseStream.Length)
   {
       //Get a set of bytes and pack them into the largefileinfo
       int BytesRead = SourceStream.Read(FileBuffer, 0, 1000);

       LocalLargeFileInfo.FileContent = FileBuffer;

       //Send the LargeFileInfo to the server
       localLargeFileResponse = localClient.TransferLargeFile(LocalLargeFileInfo);

   }
}

...和我的服务器代码:

public LargeFileInfo TransferLargeFile(LargeFileInfo argFileInfo)
{
   FileInfo DestFile = new FileInfo(String.Format(@"C:\LargeFiles\{0}\{1}", argFileInfo.TransactionID, argFileInfo.FileName));

   if(!DestFile.Directory.Exists)
   {
       DestFile.Directory.Create();
   }

   using (BinaryWriter DestStream = new BinaryWriter(new FileStream (DestFile.FullName, FileMode.Append), Encoding.Unicode))
   {
       DestStream.Write(argFileInfo.FileContent, 0, argFileInfo.FileContent.Length);
   }

   argFileInfo.ContinueFrom += argFileInfo.FileContent.Length;

   return argFileInfo;
}

我试过改变编码。我试过使用纯文件流。我已经尝试了我能想到的一切,但我最终无法打开文件。

我可以复制 zip 和 AutoCAD dwg 和 PDF,但不能复制 Word 文档。他们有什么特别之处?

4

0 回答 0