2013-05-31 79 views
1

我在想如何在grails中保存上傳的圖像。如何保存上傳的圖像

這種情況: 我有一個表格,包含文件上傳的gsp頁面。我試圖從fileupload獲取數據,但它不會工作。

在控制器:

def file = request.getFile('fileupload') 
    appearanceInstance.logo = file.encodeAsBase64().toString() 

在視圖:

 <g:form action="save" enctype="multipart/form-data"> 
       <div class="file-upload"> 
        <label >Choose logo</label> 
        <input id="fileupload" type="file" name="fileupload" onchange="handleFileSelect(this)"/> 
       </div><br/> 
       <br/> 
    </g:form> 

任何人誰過這方面的經驗?

這可能是另一種方式來做到這一點,但由於我在視圖中使用文件upoad選擇圖像時可以調整圖像,我可以從控制器中獲取圖像數據嗎?

在此先感謝!

UPDATE:

是明確的,也有形式的一些其他控件,從中我得到的其他參數進行保存。

回答

0

嗨,試試這個。

高清節省= {

def requestInstance = new Request(params) 
def requestNumberInstance = new RequestNumber() 

if(requestInstance.validate() && requestInstance.save(flush: true)){ 
    println "Saved successfully with ${requestInstance.picture1.length} bytes" 
} 
else { 
    println "Save failed" 
} 
+0

我已經看過使用此代碼的帖子,但這不是我要找的。我正在尋找一種方法將上傳的圖像轉換爲base64。所以我想從視圖中獲得「uploadedimage」的價值。 – leke

1

試試這個,我希望這會幫助你我的作品也看到這個post

Class SomeController{ 
    def uploader(){ 

    } 
    def save(){ 
    String s="" 
    CommonsMultipartFile f=request.getFile('fileupload') 
    final String name =f.getOriginalFilename() 
    def fos= new FileOutputStream(new File(name)) 
    f.getBytes().each{ fos.write(it) } 
    s=Base64.encode(f.getBytes()) 
     fos.flush() 
     fos.close() 
    render 'done now refresh your source directory to see the file ${s}' 
} 

and the view'uploader.gsp'

<g:form action="save" enctype="multipart/form-data"> 
     <div class="file-upload"> 
      <label>Choose logo</label> <input id="fileupload" type="file" 
       name="fileupload" /> 
     </div> 
     <input type="submit" class="buttons" value="Upload" /> 
    </g:form>