我正在编写一个使用字节缓冲区传输大文件的 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 文档。他们有什么特别之处?