[英]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.