簡體   English   中英

域類中的圖像屬性

[英]Image property in domain class

我試圖在域類上添加img字段,我運行我的應用程序,一切正常。 當我嘗試添加img時出現此錯誤,

屬性carImg類型不匹配

這是我的領域課程

package carrentco


class Car {

    String brand
    String model
    String fuelType
    BigDecimal pricePerDay
    byte[] carImg


    static constraints = {
        brand(inList:["AUDI", "BMW", "MERCEDES", "NISSAN", "HONDA", "FORD"])
        model()
        fuelType(inList:["FUEL", "DIESEL", "AUTOGAS"])
        pricePerDay(min:0.0, max:1000.0)
        carImg(nullable:true, maxSize:1000000)
    }

}

這是我添加到控制器中的內容。

def displayCarImg = {
        def car = Car.get(params.id)
        response.contentType = "image/jpeg"
        response.contentLength = car?.carImg.length
        response.outputStream.write(car?.carImg)
    }

這是我的show.gsp

<img src="${createLink(action:'displayCarImg', id:carInstance?.id)}" />

這里有些相似

def viewPic(Long picId) {
        def photo = ChatUserPics.get( picId ?: params.id)
        if (photo) {
            byte[] image = photo.photo
            response.outputStream << image
        }
    }

似乎在這種情況下可行,也許您還沒有遵循所有官方文檔。

我強烈建議先比較一下將圖像存儲在文件系統和數據庫上,以作為解決方案。 個人使用DB作為指針-文件系統位置。

如果您有100,000個用戶,每個用戶都有10張圖像,則很可能沒有經驗,直接從手機攝像頭上傳2mb文件。 現在想象一下該數據庫的備份時間。 如果需要復制數據,則VS遷移會花費時間。 數據庫問題,必須依靠gig db備份來還原。

無論如何,您正握着方向盤駕駛着一個乘客,認為這可能是一條崎bump不平的道路

如果圖像足夠小(例如頭像或拇指),則可以將其存儲為Base64編碼的字符串:

class Car {    
    String brand
    String carImg
}

保存在控制器中后,您可以執行以下操作:

car.carImg = new String( imageAsByteArray ).encodeAsBase64()

並將其顯示在GSP中:

<img src="${car.carImg}"/>

這種方法的一大優勢是,您無需在新請求中獲取每個圖像。 相反,您只有一個包含所有嵌入圖像的數據頁。 這對於移動應用程序極為有利。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM