file - grails:将文件上传到所选文件夹中

标签 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”

最佳答案

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

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/

相关文章:

c - 使用 fscanf 读取整数时遇到问题

c++ - 确定下载的文件是否与现有文件相同的函数

java - 如何从Java文件中读取随机行

ruby - 从变量中获取元素?

grails - 建立搜寻标准并不容易?

grails - Grails实体约束

jquery - 隐藏参数网址(jQuery和Grails)

jquery - 如何避免文件上传时的 CORS 预检请求?

php - 通过 REST 使用 Laravel 上传文件

javascript - 在 JavaScript 中创建字节数组