在我的Grails应用程序中,用户需要在适当的文件夹中上传文件。 我已经实现了(如所描述的here)允许在适当的文件夹中上传文档的系统,但我需要做一些修改。 用户可以上传不同类型的文件,因此我为每种要上传的文件创建了文件夹。因此,我需要在选择文件后,用户可以选择必须上载文件的文件夹。 我该怎么办?
编辑: 我认为需要一些澄清。我需要创建的文件夹结构如下:
- Folder
-- Subfolder
--- Sub-subfolder
- base_folder
-- folderOfUser1
--- folderOfKind1
--- folderOfKind2
--- folderOfKindN
-- folderOfUser2
--- folderOfKind1
--- folderOfKind2
--- folderOfKindN
-- folderOfUserN
--- folderOfKind1
--- folderOfKind2
--- folderOfKindN
所以,如果我不能使用Sergio的解决方案,因为我有“folderOfUserN”,只有在运行时才知道
答案 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
以反映用户选择的选项。