0
本質上,我有一個img
標記,src
屬性/ChartImg.axd?i=chart_0_0.png&g=06469eea67ea452b977f8e73cad70691
。我是否需要創建另一個WebRequest來獲取此資源的內容,還是有一種更簡單的方法?如何刮取axd資源的內容?
我正在抓取當前請求的輸出。以下是我到目前爲止...
本質上,我的additionaAssets將在某些情況下包含一個.axd資源的相對Uri。我想將這些內容包含在我正在構建的檔案中。
private void ProcessPrintRequest()
{
this.Response.Clear();
this.Response.ContentType = "application/zip";
this.Response.AddHeader("Content-Disposition", "attachment;filename=archive.zip");
using (var stream = new ZipOutputStream(new ZeroByteStreamWrapper(this.Response.OutputStream)))
{
stream.SetLevel(9);
var additionalAssets = new PathNormailzationDictionary();
this.ExportDocument(stream, additionalAssets);
this.ExportAdditionalAssets(stream, additionalAssets);
}
this.Response.End();
}
private void ExportAdditionalAssets(ZipOutputStream stream, PathNormailzationDictionary additionalAssets)
{
var buffer = new byte[32 * 1024];
int read;
// TODO: Request content of .axd resources
foreach (var item in additionalAssets.Where(item => File.Exists(Server.MapPath(item.Key))))
{
var entry = new ZipEntry(item.Value);
stream.PutNextEntry(entry);
using (var fileStream = File.OpenRead(Server.MapPath(item.Key)))
{
while ((read = fileStream.Read(buffer, 0, buffer.Length)) > 0)
{
stream.Write(buffer, 0, read);
}
}
}
}
private void ExportDocument(ZipOutputStream stream, PathNormailzationDictionary additionalAssets)
{
var entry = new ZipEntry("index.html");
stream.PutNextEntry(entry);
var document = this.GetNormalizedDocument(additionalAssets);
var writer = new StreamWriter(stream);
writer.Write(document);
writer.Flush();
}
private string GetNormalizedDocument(PathNormailzationDictionary additionalAssets);