grails:上传所选文件夹中的文件

时间:2013-11-28 10:40:57

标签: file grails upload directory

在我的Grails应用程序中,用户需要在适当的文件夹中上传文件。 我已经实现了(如所描述的here)允许在适当的文件夹中上传文档的系统,但我需要做一些修改。 用户可以上传不同类型的文件,因此我为每种要上传的文件创建了文件夹。因此,我需要在选择文件后,用户可以选择必须上载文件的文件夹。 我该怎么办?

编辑: 我认为需要一些澄清。我需要创建的文件夹结构如下:

- Folder
-- Subfolder
--- Sub-subfolder


- base_folder
-- folderOfUser1
---  folderOfKind1
---  folderOfKind2
---  folderOfKindN

-- folderOfUser2
---  folderOfKind1
---  folderOfKind2
---  folderOfKindN

-- folderOfUserN 
---  folderOfKind1
---  folderOfKind2
---  folderOfKindN

所以,如果我不能使用Sergio的解决方案,因为我有“folderOfUserN”,只有在运行时才知道

1 个答案:

答案 0 :(得分:2)

查看您的链接,您似乎需要修改配置逻辑:

environments {
    development {
        uploadFolders = [
          pdf : "c:/temp/upload/{username}/pdf",
          png : "c:/temp/upload/{username}/images",
          gif : "c:/temp/upload/{username}/images",
        ]
    }
    test {
        uploadFolder = [...]
    }
    production {
        uploadFolder = [...]
    }
}

修改

当您检索上传路径时,使用当前用户名替换{username}。放置此逻辑的最佳位置是服务。假设您正在使用Spring Security:

class UploadService {

  static transactional = false //no need to transactions in this service

  static final String PLACEHOLDER = "{username}"

  def grailsApplication

  def springSecurityService

  String getFolderByTpeAndUser(String type) {
    def user = springSecurityService.currentUser
    def path = config[type]?.replace(PLACEHOLDER, user.username)
    return path
  }

  def getConfig() {
    return grailsApplication.config.uploadFolders
  }

}

然后,您需要在显示此选项的视图中添加一个g:select,然后更改DocumentController以反映用户选择的选项。