我的 Grails 应用程序在文件夹中生成文件(例如“输出”)。如何使该文件夹公开,以便通过以下 URL 公开输出文件:
http://localhost:8080/MyGrailsApp/output/myOutputFile1.xml
http://localhost:8080/MyGrailsApp/output/myOutputFile2.xml
干杯!
有两种方法可以做到这一点。首先是阅读您的应用程序服务器的文档,并在存储 xml 文件的任何目录上启用目录列表。如果您需要与应用程序服务器无关,第二个选项可能是创建一个使用 URL 映射自动加载的简单控制器并返回请求的文件。有关 grails 中 URL 映射的文档和示例,请参见 http://www.grails.org/URL+mapping
这段代码不是完美的或经过测试的,只是在这里输入,但它应该让你朝着正确的方向前进
创建一个名为 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}"
}
}
更新 url 映射文件
mappings {
"/output/$fileName?" {
controller = "output"
action = "viewFile"
}
}