2013-05-31 80 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>