2012-11-25 21 views
5

वहाँ एक रास्ता एक बाइट सरणी एक Freemarker टेम्पलेट में Base64 में बदलने के लिए है? कुछ ऐसा:एनकोड बेस 64

<img src="data:image/jpeg;base64,${photo.data?base64}" /> 

धन्यवाद।

उत्तर

2

मौजूदा रिलीज में कोई अंतर्निहित तरीका उपलब्ध नहीं है। वस्तु जिसका तरीकों आप कॉल करने के लिए डेटा मॉडल में डाल दिया जाना चाहिए (अर्थात टेम्पलेट संदर्भ) चाहते हैं (लेकिन बेशक आप यह करने के लिए अपनी खुद की विधि कॉल कर सकते हैं।)

। (स्टैटिक्स के लिए: freemarker.org/docs/pgui_misc_beanwrapper.html#autoid_55)

लेकिन, आसान रखरखाव के लिए, मैं इस पसंद करते हैं: वर्ग com.foo.Base64EncoderMethod implements TemplateMethodModelEx (कि Base64.encodeBase64 आंतरिक रूप से कॉल) बनाते हैं, तो एक टेम्पलेट lib/utils.ftl और उस में बना (यदि आप पहले ऐसा ही कुछ नहीं है) , <#assign base64Encode = 'com.foo.Base64EncoderMethod'?new()> पर कॉल करें। तब टेम्पलेट्स में, <#import '/lib/utils.ftl' as u> और ${u.base64Encode(photo.data)}

+1

आप इसे कैसे करते हैं कहते हैं? मैं अपने आवेदन में बेस 64 एन्कोडिंग करने के लिए कॉमन्स-कोडेक का उपयोग करता हूं। फ़ंक्शन है: 'Base64.encodeBase64 (बाइट [])' – Michael

+1

जिस ऑब्जेक्ट को आप कॉल करना चाहते हैं उसे डेटा-मॉडल (= टेम्पलेट संदर्भ) में रखा जाना चाहिए। (स्टैटिक्स के लिए: http://freemarker.org/docs/pgui_misc_beanwrapper.html#autoid_55) लेकिन, आसान रखरखाव के लिए, मैं इस पसंद करते हैं: 'बनाने वर्ग com.foo.Base64EncoderMethod लागू करता TemplateMethodModelEx' (कि' Base64.encodeBase64' आंतरिक रूप से कहता है), फिर उस टेम्पलेट को 'lib/utils.ftl' बनाएं (यदि आपके पास पहले से ऐसा कुछ नहीं है), उस < ', में टेम्पलेट्स '<#import' /lib/utils.ftl 'के रूप में आप> 'और' $ {base64Encode (photo.data)} '। – ddekany

+0

मेरा मतलब था, '$ {u.base64Encode (photo.data)}' ('u.' को याद किया गया)। – ddekany

संबंधित मुद्दे