2015-12-19 2 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 } 
}