从grails中的数据库中检索信息和图像

时间:2016-09-22 07:51:25

标签: grails

我有一个名为Product的域类。我已将信息和图像保存在数据库中。但在检索信息时,我检索了所有信息,但无法检索图像。

Domain Class

class Product {

        String productName    
        String description    
        int price    
        byte [] photo
        String phototype
    }

I have saved the information and image in database using this action in ProductController. In gsp page, I used <g:uploadForm> tag to get information.



def saveProduct(){

    def pic = request.getFile('picture')
    product.properties['productName','description','price'] = params
    product.photo=pic.bytes
    product.phototype=pic.contentType

    if(!product.save()){
        render (view: "/adminPanel", model: [upload: "Product Failed to Upload",product:product])
        return
    }
    else {
        render (view: "/adminPanel", model: [upload: "Product Successfully Saved!!",product: product])
    }
}

此代码将信息和图像保存在数据库中。现在,如何在adminPanel.gsp页面中显示图像和产品信息?我应该在控制器和gsp页面中编写什么样的代码?

2 个答案:

答案 0 :(得分:0)

尝试使用插件。
Avatar uploader 是一个不错的选择。

  

简单的头像上传器 - Grails使这些图像的上传和显示几乎是微不足道的。

答案 1 :(得分:0)

您可以非常简单地显示存储在DB中的图片。

只需添加一个操作即可从表中检索图像并将其发送到GSP

class ProductController {

    def saveProduct(){
    .......
    }    

    /** Action for fetching the image byte array
        Assuming that you have passed the "productName" from UI 
        to fetch the particular product image
     */
    def fetchProductImage(){
        def product = Product.findByProductName(params.productName)
        byte[] imageInByte = product.photo
        response.contentType = 'image/png' // or the appropriate image content type
        response.outputStream << imageInByte
        response.outputStream.flush()
    }        
}

GSP View调用此控制器操作,如下所示:

<img src="${createLink(controller: 'product', action: 'fetchProductImage', params: ['productName': 'Some_product_name'])}"/>