在我的Grails应用程序中,用户需要将文件上传到正确的文件夹中。
我已经实现了(如here所述)可以在适当文件夹中上传文档的系统,但是我需要做一些修改。
用户可以上传不同类型的文件,因此我为每种要上传的文件创建了文件夹。因此,我需要选择文件后,用户可以选择必须在其中上传文件的文件夹。
我该怎么做?
编辑:
我认为需要澄清一下。我需要创建的文件夹结构如下:
- Folder
-- Subfolder
--- Sub-subfolder
- base_folder
-- folderOfUser1
--- folderOfKind1
--- folderOfKind2
--- folderOfKindN
-- folderOfUser2
--- folderOfKind1
--- folderOfKind2
--- folderOfKindN
-- folderOfUserN
--- folderOfKind1
--- folderOfKind2
--- folderOfKindN
因此,如果我无法使用Sergio的解决方案,因为我只有在运行时才知道“folderOfUserN”
最佳答案
查看您的链接,看来您需要修改配置逻辑:
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
}
}
然后,您需要在显示此选项的 View 中添加一个
g:select
,并更改DocumentController
以反射(reflect)用户选择的选项。
关于file - grails:将文件上传到所选文件夹中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20263832/