如何在Grails上公开目录?

时间:2010-08-30 11:49:34

标签: grails directory public

我的Grails应用程序在文件夹中生成文件(例如“输出”)。 如何公开该文件夹,以便通过以下URL公开输出文件:

http://localhost:8080/MyGrailsApp/output/myOutputFile1.xml
http://localhost:8080/MyGrailsApp/output/myOutputFile2.xml

干杯!

2 个答案:

答案 0 :(得分:1)

你可以通过两种方式做到这一点。首先阅读您的应用程序服务器所在的文档,并在您的xml文件存储的任何目录中启用目录列表。如果您需要与应用程序服务器无关,第二个选项可能是创建一个使用URL映射自动加载的简单控制器并返回请求的文件。有关grails中URL映射的文档和示例,请参阅 http://www.grails.org/URL+mapping

答案 1 :(得分:0)

此代码并不完美或经过测试,只需在此输入,但它应该让您朝着正确的方向前进

创建一个名为OutputController.groovy的控制器

def viewFile = {

    // add checks to ensure fileName parameter has no "/" or ".." to
    // prevent directory transversal

    def file = new File(OUTPUT_FILE_PATH + params?.fileName)

    if (file.exists()) {
        render(text: file.newInputStream().text, contentType: "text/plain",
                       encoding: "UTF-8")
    } else {
        render "FILE NOT FOUND: ${params?.fileName}"
    }
}

更新网址映射文件

mappings {
  "/output/$fileName?" {
      controller = "output"
      action = "viewFile"
  }
}