Post 使用lua将文本区域保存到文件中

Post 使用lua将文本区域保存到文件中,post,lua,textarea,Post,Lua,Textarea,我有一个web服务器(uhttpd),它使用CGI和LUA。 我制作了一个带有文本区域的表单。 我需要的是将textarea的内容保存在/etc/list.txt中的文件中 我认为LUA脚本必须读取POST变量,然后将它们保存到本地文件/etc/list.txt中 我已经有了读取文件的脚本: function file_exists(file) local f = io.open(file, "rb") if f then f:close() end return f ~= nil

我有一个web服务器(uhttpd),它使用CGI和LUA。 我制作了一个带有文本区域的表单。 我需要的是将textarea的内容保存在/etc/list.txt中的文件中 我认为LUA脚本必须读取POST变量,然后将它们保存到本地文件/etc/list.txt中

我已经有了读取文件的脚本:

function file_exists(file)
  local f = io.open(file, "rb")
  if f then f:close() end
  return f ~= nil
end

function lines_from(file)
  if not file_exists(file) then return {} end
  lines = {}
  for line in io.lines(file) do 
    lines[#lines + 1] = line
  end
  return lines
end

local file = '/etc/list.txt'
local lines = lines_from(file)

print ('<textarea name="mensaje" cols="40" rows="40">')

for k,v in pairs(lines) do
  print(v)
end

print ("</textarea>")
功能文件\u存在(文件)
本地f=io.open(文件“rb”)
如果为f,则为f:close()结束
返回f~=nil
结束
来自(文件)的功能行
如果文件不存在(file),则返回{}end
行={}
对于io中的行。行(文件)do
线条[#线条+1]=线条
结束
回程线
结束
本地文件='/etc/list.txt'
本地行=来自(文件)的行
打印(“”)
对于k,v成对(线)do
印刷品(五)
结束
打印(“”)
此脚本将file.txt的内容显示在文本区域中。 现在我需要一个“保存”按钮,将文本区域再次发布到文件中


感谢您的帮助,祝您度过愉快的一天。

小评论:文件中的
行\u每次调用时都会覆盖全局变量
行。这应该是本地的。在读取文件之前打开和关闭文件以查看它是否存在也是浪费。该操作可以从
折叠到
行中:

function lines_from(filename)
  local lines = {}
  local file = io.open(filename)
  if file then 
      for line in file:lines(file) do 
        lines[#lines + 1] = line
      end
      file:close();
  end
  return lines
end
在你的情况下,甚至没有理由把文本读成行。只需读取文件的所有文本:

function text_from(filename)
  local text = ''
  local file = io.open(filename)
  if file then 
      text = file:read('*a') 
      file:close();
  end
  return text
end

local file = 'test.lua'
local text = text_from(file)

print ('<textarea name="mensaje" cols="40" rows="40">')
print(text)
print ("</textarea>")
function save_text_to(filename, text)
  local file = io.open(filename, 'w+')
  if file then 
      text = file:write(text);
      file:close();
  end
end

save_text_to('foo', text)