none
将内存中已生成的图片通过Response下载 RRS feed

  • 问题

  • 在内存已经生成好图片,然后下载到本地,这段代码好像不对

      Dim bmp As New Bitmap(900, 800 , PixelFormat.Format16bppRgb565)
    
      Dim g As Graphics = Graphics.FromImage(bmp)
    
      g.Clear(Color.White)
    
    
    
    ..............
    
    
    
      Dim Resp As HttpResponse
    
      Resp = Page.Response
    
    
    
      Resp.AppendHeader("content-disposition", "attachment;filename=" + "Freight.Gif")
    
      Dim ms As New MemoryStream()
    
      Try
    
       bmp.Save(ms, ImageFormat.Gif) 'bmp是已经生成好的图片,类型为 Bitmap
    
       Resp.ClearContent()
    
       Resp.ContentType = "image/GIF"
    
       Resp.BinaryWrite(ms.ToArray())
    
      Finally
    
       bmp.Dispose()
    
       g.Dispose() 'g 的类型 Graphics
    
       Resp.End()
    
    
    
      End Try
    
    

    运行时报错,错误如下

    Microsoft JScript 运行时错误: Sys.WebForms.PageRequestManagerParserErrorException: The message received from the server could not be parsed. Common causes for this error are when the response is modified by calls to Response.Write(), response filters, HttpModules, or server trace is enabled.
    Details: Error parsing near 'GIF89a���'.

     

    请问如何解决 


    xulan
    2010年10月27日 6:51

答案

  • 问题解决了,可能是下载的按钮放在UpdatePanel里的关系

    <asp:PostBackTrigger ControlID ="CmdExportImg" /> </Triggers>
    
    
    加了个局部更新的触发器就解决了
    xulan
    • 已标记为答案 xulanb 2010年10月28日 2:50
    2010年10月28日 2:50

全部回复

  • 加上

     Response.ClearHeaders()

    试试,你的错误信息应该在输出图片之前已经输出了其他信息


    【孟子E章】
    2010年10月27日 9:53
    版主
  • 问题依旧,
    Resp.ClearHeaders()
    Resp.AppendHeader("content-disposition", "attachment;filename=" + "Freight.GIF")
    
    是不是加在这里
    xulan
    2010年10月28日 1:09
  • 问题解决了,可能是下载的按钮放在UpdatePanel里的关系

    <asp:PostBackTrigger ControlID ="CmdExportImg" /> </Triggers>
    
    
    加了个局部更新的触发器就解决了
    xulan
    • 已标记为答案 xulanb 2010年10月28日 2:50
    2010年10月28日 2:50