【问题标题】:How to upload a directory via Grails or Java?如何通过 Grails 或 Java 上传目录?
【发布时间】:2010-05-24 23:04:53
【问题描述】:

在 grails 中上传目录的最佳方式是什么?

我试试这个代码:

  def upload = {
    if(request.method == 'POST') {
        Iterator itr = request.getFileNames();

        while(itr.hasNext()) {
            MultipartFile file = request.getFile(itr.next());
            File destination = new File(file.getOriginalFilename())

            if (!file.isEmpty()) {
                file.transferTo(destination)
                // success
            }
            else
            {
                // failure
            }
        }

        response.sendError(200,'Done');
    }
  }

很遗憾,我只能逐个文件上传。 我想定义我的目录,并直接上传所有文件。

有什么想法吗?

【问题讨论】:

    标签: java grails groovy upload file-upload


    【解决方案1】:

    这里有一个主要的误解。您发布的代码只有在服务器和客户端都在物理上相同机器上运行(这在现实世界中不会发生)如果你是使用具有不当行为的 MSIE 浏览器沿文件名发送完整路径。

    您实际上应该以InputStream 的形式获取上传文件的内容,并将其写入任何OutputStream 通常的Java IO 方式。文件名可用于在服务器端创建具有相同名称的文件,但您将确保从文件名中错误地剥离 MSIE 发送的路径。

    对于您的实际功能要求,HTML 不提供通过单个 <input type="file"> 元素上传完整目录或多个文件的功能。您需要创建一个能够执行此操作的客户端应用程序并从您的网页提供此功能,例如使用 Swing JFileChooser 的 Java Applet。对此存在第 3 方解决方案,例如 JumpLoader

    【讨论】:

    • 好的,我不能通过 HTML 上传完整的目录。 JumpLoader 看起来不错,但不是免费的(我会尝试寻找类似的项目)。谢谢!
    • 它是免费的。再读一遍,您只需要在需要无徽标版本或完全开源版本时付费。点击顶部导航栏中的下载链接以获取免费版本。
    猜你喜欢
    • 2017-08-13
    • 1970-01-01
    • 2021-08-31
    • 2010-10-29
    • 1970-01-01
    • 2011-04-05
    • 2011-04-29
    • 2015-10-27
    • 1970-01-01
    相关资源
    最近更新 更多