https://msdn.microsoft.com/en-us/library/ms252172.aspx
我正在使用该文章中的渲染方法
public void Render(
string format,
string deviceInfo,
CreateStreamCallback createStream,
out Warning[] warnings
)
渲染方法调用createstream
private Stream CreateStream(string name, string fileNameExtension,
Encoding encoding, string mimeType, bool willSeek)
{
Stream stream = new FileStream(name + "." + fileNameExtension,
FileMode.Create);
m_streams.Add(stream);
return stream;
}
m_streams = new List<Stream>();
report.Render("Image", deviceInfo, CreateStream, out warnings);
foreach (Stream stream in m_streams)
stream.Position = 0;
如果我想要使用块的createstream方法编写HTTP响应对象?
除了迭代之外,foreach方法在这里做什么,为什么它将流设置为0?
由于report.render方法返回一个void并将回调对createstram,并且如果图像很大,我该如何循环循环块并将二进制块返回到http响应对象?
您可以用 RenderStream
的结果作为字节[]做任何事情。我不知道为什么该位置设置为上面的0,但是您可以将图像写入临时文件夹,例如:
var image = _service.RenderStream("HTML4.0", streamID, null, out imageEncoding, out mimeType);
File.WriteAllBytes(Path.Combine(_physicalTempFolder,streamID),image);