将图像上传到grails中的web-app / image目录

时间:2015-12-26 18:33:30

标签: image grails upload

我正在尝试使用图片上传功能构建应用程序...问题是我无法找到将图像上传到web-app / images目录的方式..我使用的是Grails 2.2.1并且无法做到这一点。如果有人可以提供帮助,那将是很棒的...先谢谢你们!我已经尝试了一些代码并将其上传到控制器但我没有办法将其上传到目录..我有以下代码用于我的控制器:

def file = request.getFile('image')

def name = file.getOriginalFilename()
println "file is "+name
if (file && !file.empty) {
    //I dont know how to specify directory and upload the image file, the code must be written here
    flash.message = 'Image uploaded'
}ere

1 个答案:

答案 0 :(得分:1)

首先,如果你使用版本控制(git | svn),你永远不应该将图像上传到应用程序的目录中,因为文件也受版本控制,它会使应用程序变得更重。

您可以做的是将图像保存在其他位置,并在Config.groovy中保存位置路径

    imageUpload.path='your location'

以及需要以何种方式访问​​此位置

    grailsApplication.config.imageUpload.path

现在使用<g:uploadForm>标记创建表单,或者您可以使用普通<form>标记,但请务必将enctype属性更改为multipart / form-data

查看演示表格

    <g:uploadForm action="uploadImage">
        <input type="file" name="image">
        <input type="submit" value="Upload Image">
    </g:uploadForm>

现在,您可以在控制器中执行uploadImage

操作
    def uploadImage(){
      def file=request.getFile('image')
      String imageUploadPath=grailsApplication.config.imageUpload.path
      try{
         if(file && !file.empty){
         file.transferTo(new File("${imageUploadPath}/${file.name}"))
         flash.message="your.sucessful.file.upload.message"
         }
         else{
         flash.message="your.unsucessful.file.upload.message"
         }
      }
      catch(Exception e){
         log.error("Your exception message goes here",e)   
      }

    }

这有助于上传您的图片,但不会在您的网络应用/图片目录中。

但如果您仍想将其转移到web-app / images目录,您可以在Config.groovy中设置web-app / images目录的路径,如上所述。