1.00 触摸下载文件的几种方法

发布于 2019-05-30 19:31:18

1.使用官方自带的FTP下载,首先你要有一个FTP服务器.配置方法百度吧.我这个服务器使用的是FileZilla.配置好以后自己先用FTP软件连接试试能不能正常使用.

    flag = ftpGet("ftp://demo.evanelf.com/test.lua.E3", "/var/touchelf/scripts/test.lua.E3", "test", "123456")
    if flag then
        notifyMessage("下载成功")
    else
        notifyMessage("下载失败")
    end

不详细解释了.看开发文档

下载失败的基本上99%都是服务器设置问题.

2.使用socket的FTP下载

local ftp = require("socket.ftp")
    ftp.TIMEOUT = 10 --设置超时时间
    flag,e = ftp.get("ftp://test:123456@demo.evanelf.com/test.lua.E3;type=i")
    if flag then
        local file = io.open("/var/touchelf/scripts/test.lua.E3","w")
        file:write(flag)
        file:close()
    else
        notifyMessage(e);
    end

socket.ftp的另一种写法.可以设置更多的参数,实现更多的功能,例如获取列表,删除文件等等

local ftp = require("socket.ftp")
   local ltn12 = require("ltn12")
   local back = {}
       r, e = ftp.get{
           url = "//demo.evanelf.com",
           user = "test",
           password = "123456",
           type = "i",
           command = "RETR",
           argument = "test.lua.E3",
           sink = ltn12.sink.table(back)
       }
   if r then
       local file = io.open("/var/touchelf/scripts/test.lua.E3","w")
       file:write(table.concat(back))
       file:close()
   else
       notifyMessage(e,5000);
   end
更多使用说明可以查看 http://w3.impa.br/~diego/software/luasocket/ftp.html
https://github.com/diegonehab/luasocket.git

3.使用HTTP方法下载文件,首先保证服务器有web服务,即使用网址可直接显示或下载文件.

明文内容可直接使用触摸自带的httpGet下载,例如txt.lua等访问web地址可直接显示内容的文件

r = httpGet("http://demo.evanelf.com/FileUpload/game/test.lua");
    if r then
        local file = io.open("/var/touchelf/scripts/test.lua","w")
        file:write(r)
        file:close()
    end

如果是2进制文件,例如加密脚本需要使用socket的http方法下载

local http = require("socket.http")
      http.TIMEOUT = 30 --设置超时时间
   r = http.request("http://demo.evanelf.com/FileUpload/game/test.lua.E3");
   if r then
       local file = io.open("/var/touchelf/scripts/test.lua.E3","w")
       file:write(r)
       file:close()
   end
6 条评论

发布
问题