如何保存上传的图片

时间:2013-05-31 08:28:11

标签: grails file-upload base64

我想知道如何将上传的图像保存为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选择图像时在视图中进行调整,我可以从控制器中获取图像数据吗?

提前致谢!

更新:

要清楚,表单中还有一些其他控件,我可以从中获取其他参数来保存。

3 个答案:

答案 0 :(得分:3)

我想这个示例Simple Avatar Uploader将回答您的所有问题

答案 1 :(得分: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}'
}

和视图'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>

答案 2 :(得分:0)

你好试试这个。

def save = {

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"
}