का उपयोग करके पोस्टग्रेज़ में छवियों को सहेजना/लोड करना मुझे लगता है कि मैं छवि को पोस्टग्रेस पर सही तरीके से सहेज रहा हूं, लेकिन छवि लोड करने की कोशिश कर रहे अप्रत्याशित परिणाम प्राप्त करें। मुझे वास्तव में पता नहीं है कि त्रुटि सहेजने या लोड में है या नहीं।एनार्म (स्कैला/प्लेफ्रेमवर्क 2)
def storeBadgeImage(badgeHandle: String, imgFile: File) = {
val cmd = """
|update badge
|set img={imgBytes}
|where handle = {badgeHandle}
"""
var fis = new FileInputStream(imgFile)
var imgBytes: Array[Byte] = Resource.fromInputStream(fis).byteArray
// at this point I see the image in my browser if I return the imgBytes in the HTTP response, so I'm good so far.
DB.withConnection { implicit c =>
{
try {
SQL(cmd stripMargin).on("badgeHandle" -> badgeHandle, "imgBytes" -> imgBytes).executeUpdate() match {
case 0 => "update failed for badge " + badgeHandle + ", image " + imgFile.getCanonicalPath
case _ => "Update Successful"
}
} catch {
case e: SQLException => e.toString()
}
}
}
}
... मैं "अद्यतन सफल", इसलिए मुझे लगता है सेव किया जाता है (मैं गलत हो सकता है) काम कर रहे:
यहाँ छवि को बचाने के लिए मेरी Anorm कोड है।
def fetchBadgeImage(badgeHandle: String) = {
val cmd = """
|select img from badge
|where handle = {badgeHandle}
"""
DB.withConnection { implicit c =>
SQL(cmd stripMargin).on("badgeHandle" -> badgeHandle)().map {
case Row(image: Array[Byte]) => {
"image = " + image
}
case Row(Some(unknown: Any)) => {
println(unknown + " unknown type is " + unknown.getClass.getName) //[[email protected] unknown type is [B
"unknown"
}
}
}
}
... बजाय मामले में जा रहा: यहाँ छवि लोड करने के लिए अपने कोड है "रो (छवि: सरणी [बाइट])" के रूप में आशा व्यक्त की, यह "पंक्ति में चला जाता है (कुछ (अज्ञात: कोई भी)) "मामला। मेरे println आउटपुट
मैं नहीं जानता कि बी है कि किस प्रकार [या जहाँ मैं गलत हो गया हो सकता है "[बी @ 11be1c6 अज्ञात प्रकार [बी है" ...
धन्यवाद, काजुहिरो। मैंने "पंक्ति (कुछ (छवि: ऐरे [बाइट])) से मेल खाने का पहला विकल्प लिया"। मुझे इतनी स्पष्ट गलती करने में थोड़ा मूर्खता महसूस हुई। एक बार फिर धन्यवाद। –