2015-12-19 17 views
0

渲染圖像我有字節數組byteImg但我想從字節數組在我的控制器JPEG渲染:Grails的控制器:如何從字節數組

def getSelfie = new HTTPBuilder() 
    getSelfie.request(fullSelfieUrl, GET, JSON) { req -> 
     headers.'X-DreamFactory-Session-Token' = session_id 
     headers.'X-DreamFactory-Application-Name' = 'checkReg' 
     response.success = { resp, reader -> 
      assert resp.statusLine.statusCode == 200 
      println "Get response: ${resp.statusLine}" 
      println "Content-Type: ${resp.headers.'Content-Type'}" 
      resp = reader as grails.converters.JSON 

      String str = resp.toString() 
      JSONObject jsonObject = new JSONObject(str) 
      selfieRend = jsonObject.getString("selfie") 
      byteImg = selfieRend.getBytes() 

      render byteImg 
      return byteImg 
     } 
     response.'404' = { 
      println 'Information not found' 
     } 
    } 

怎麼辦呢?謝謝你這麼多

+0

此代碼駐留在控制器動作? – injecteer

+0

是的,在控制器動作中的代碼 –

回答

0

我沒有測試過,但按照wiki這應該工作:

def getSelfie(){ 
    def http = new AsyncHTTPBuilder(
      poolSize : 4, 
      uri : fullSelfieUrl, 
      contentType : ContentType.JSON) 

    def result = http.get() { resp, json -> json.selfie.bytes } 

    while(!result.done) Thread.sleep 1000 

    def bytes = result.get() 

    response.setHeader 'Content-disposition', "inline; filename=someName.jpg" 
    response.setHeader 'Content-Type', 'image/jpg' 
    response.outputStream.withStream{ it << bytes } 
}