将 request_uri 获得的文件名更改

请有人帮我完成下面的代码:

location / {
    content_by_lua_block {
       ngx.req.read_body()
       local filename = string.gsub(ngx.var.request_uri, "/", "")
       ngx.say(filename)
       local data = ngx.req.get_body_data()
       local file = io.open("/tmp/filename", "w")
       file:write(data)
       file:close()
       ngx.say("body data:")
       ngx.print(data)
    }
}

我希望从request_uri获取的文件名传递到local file = io.open(/tmp/filename)

如果我使用静态名称local file = io.open("/tmp/test.txt", "w"),它就能工作。我怎样将变量文件名作为新文件名传递?

我尝试了几种方法,但是无法理解。我希望文件名成为新文件名并保存在位置/tmp/filename中。

点赞
用户2858170
用户2858170

你可以使用连接运算符 .. 来组合一个字符串:

local filename = string.gsub(ngx.var.request_uri, "/", "")

filename = "/tmp/" .. filename

或者

filename = string.format("/tmp/%s", filename)
2019-08-24 21:14:29