我正在尝试将带有.NET 2.0的CLR集成到MS SQL Server 2008中。我调用了一个API,我应该收到一个.zip作为响应。我将响应存储到Stream中,我想将此文件导出到物理.zip文件。 我尝试使用C#和SQL(BCB或OLE)导出文件,并导致文件损坏。所以,我相信我在制作流时做错了。
C#代码如下:
File.WriteAllBytes("C:\\folder\\t.zip", stream); // Requires System.IO
导出zip的C#代码如下:
public static void CopyStream(Stream input, Stream output)
{
if (input != null)
{
using (StreamReader reader = new StreamReader(input))
using (StreamWriter writer = new StreamWriter(output))
{
writer.Write(reader.ReadToEnd());
}
}
}
从流到流的副本:
{{1}}
答案 0 :(得分:1)
您的CopyStream
已损坏。你需要谈二进制。您目前正在将二进制zip数据视为文本:
byte[] buffer = new byte[2048];
int bytesRead;
while((bytesRead = input.Read(buffer, 0, buffer.Length)) > 0) {
output.Write(buffer, 0, bytesRead);
}