如何在 Lua 中下载文件,但在运行时写入本地文件

2024-03-29

我正在尝试制作一个更新程序,以便当我的 Lua 应用程序过时时它将使用LuaSocket下载较新的 .exe 文件(可以运行我的 Lua 代码)。

在这个更新程序中,我希望它显示到目前为止已下载的数量。但是,通过以下 HTTP 请求,它会阻止应用程序,直到完全下载:

local b, c, h = http.request("https://www.example.com/Download/Example.exe?from="..Game.Version)

我正在使用线程来下载它,但是在线程内部完成下载之前我仍然无法写入文件,因此进度条将变为 0%、100%,中间没有任何内容。

我可以做些什么来下载远程文件,但在下载时将其保存到本地文件吗?

cURL 可以做到这一点。我不知道 LuaSocket 或 Lua 的其他东西是否可以。 :(


你是对的 - cURL 可以做到。 LuaSocket没有这个功能。您可以创建一个 LTN12 接收器来报告进度,但在完全下载文件之前您不会知道文件的总大小,因此它有点无用。为什么不使用luacurl http://luacurl.luaforge.net/反而?

local curl = require "luacurl"
local c = curl.new()

function GET(url)
    c:setopt(curl.OPT_URL, url)
    local t = {} -- this will collect resulting chunks
    c:setopt(curl.OPT_WRITEFUNCTION, function (param, buf)
        table.insert(t, buf) -- store a chunk of data received
        return #buf
    end)
    c:setopt(curl.OPT_PROGRESSFUNCTION, function(param, dltotal, dlnow)
        print('%', url, dltotal, dlnow) -- do your fancy reporting here
    end)
    c:setopt(curl.OPT_NOPROGRESS, false) -- use this to activate progress
    assert(c:perform())
    return table.concat(t) -- return the whole data as a string
end

local s = GET 'http://www.lua.org/'
print(s)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在 Lua 中下载文件,但在运行时写入本地文件 的相关文章

  • 十六进制常数 = 格式错误的数字?

    我有一个 Lua 脚本 我试图在其中使用十六进制数字 0x 如果我使用官方 Windows 二进制文件在控制台中运行此脚本 它可以正常工作 但是如果我在我的应用程序中运行它 简单的 dofile 我得到 malformed number n
  • NSURLSession didFinishDownloadingToURL 临时下载文件未找到

    我在委托方法 didFinishDownloadingToURL 上遇到了 NSURLSession 的奇怪问题 我要做的第一件事是检查临时下载的文件是否存在 void URLSession NSURLSession session dow
  • 使用 PHP 创建 .jpg 文件的下载链接

    我想这应该很容易 我有一个分页图像库 每个图像下方都有一个小链接 上面写着 下载 Comp 这应该允许人们快速将 jpg 文件 带有 PHP 生成的水印 下载到他们的计算机上 现在 我知道我可以直接链接到 jpg 文件 但这需要用户在新窗口
  • Lua中如何获取目录列表

    我需要 LUA 中的目录列表 假设我的目录路径为 C Program Files 我需要该特定路径中所有文件夹的列表以及如何搜索该列表中的任何特定文件夹 Example 需要路径 C Program Files 中所有文件夹的列表 以下是上
  • 如何修复这个损坏文件的 PHP 下载脚本?

    我有一个强制下载脚本 可以在 PDF 和纯文本中产生良好的结果 并且在 ZIP 存档中半正常 它们在 Windows 中工作 而不是在 Linux 中工作 但是 应用程序文件和图像都失败 这些构成了我必须处理的绝大多数文件 正如我在此处看到
  • 如何使用 API 路由在 Next.js 上下载文件

    我正在使用 next js 我有一个第三方服务 我需要从中检索 PDF 文件 该服务需要一个 API 密钥 我不想在客户端公开该密钥 这是我的文件 api getPDFFile js const options method GET enc
  • 在 Corona sdk 上保存高分?

    我想保存游戏中创建的高分 并且当玩家点击高分按钮时可以在主菜单中看到 有人可以帮助我吗 您可以使用SQLITE https docs coronalabs com api library sqlite3 index html将高分保存到数据
  • 生成ip和限时下载链接

    有一个用于下载文件的直接链接 用户可以在付款后下载该链接 如下所示 http example com download webapp rar 但我需要生成ip和时间限制的下载链接 以防止其他人窃取该文件 我想在不使用任何数据库的情况下执行此
  • 检查lua中是否存在目录?

    如何检查 lua 中是否存在目录 如果可能的话最好不使用 LuaFileSystem 模块 尝试做类似以下 python 行的事情 os path isdir path 这是一种在 Unix 和 Windows 上都适用的方式 无需任何外部
  • Github 下载文件夹为 zip

    如何为我的 Github 存储库的访问者提供一个链接 以将我的存储库的 builds 文件夹下载为 zip 文件 该文件夹包含应用程序所需的可执行文件 着色器和纹理 当然 我可以手动构建该目录的 zip 文件并将其添加到存储库中 但这会导致
  • WebView2 下载进度

    需要通过WebView2获取下载进度 https learn microsoft com en us dotnet api microsoft web webview2 core corewebview2downloadoperation
  • Python下载器

    所以我试图编写一个脚本来使用 python 下载图片文件 我使用谷歌找到了这个 def 但是我下载的每张图片都 损坏 了 有任何想法吗 def download url Copy the contents of a file from a
  • 为什么 LuaJIT 这么好?

    编辑 不幸的是 LuaJIT 已从下面链接的比较中删除 This 比较 http shootout alioth debian org u64 which programming languages are fastest php编程语言的
  • 在lua中组合两个函数

    我刚开始学习lua 所以我的要求可能是不可能的 现在 我有一个接受函数的方法 function adjust focused window fn local win window focusedwindow local winframe w
  • 使用 FastCGI 运行 Lua 脚本

    我目前正在尝试找出使用 FastCGI 与 lighttpd 或 Nginx 一起运行 Lua 脚本的方法 我唯一能挖到的是WSAPI http keplerproject github com wsapi 开普勒计划的一部分 但我想知道是
  • VB6 - Lua 集成

    我想知道是否有人有任何集成 Lua 和 VB6 的技巧 我正在运行一个小型在线角色扮演游戏 添加一些脚本会很棒 嗯 这是可行的 我曾经为 Lua 5 0 2 做过 但找不到文件 在您拥有的选项中 您可以 将 Lua 封装在公开 Lua AP
  • 检查多个位置的值并仅在源唯一时返回匹配项

    假设我有一个清单Vendors 阿斯达 乐购 Spar 我有一个清单Sources 或者这个类比中的供应商 家乐氏 Kellogg 吉百利 Cadbury 雀巢 Nestle 强生 Johnsons 帮宝适 Pampers Simple 等
  • PHP:如何访问根目录之外的下载文件夹? [复制]

    这个问题在这里已经有答案了 我如何创建一个 PHP 脚本 页面 允许会员 买家下载存储在根目录之外的下载文件夹中的压缩文件 产品 我正在使用 Apache 服务器 请帮忙 谢谢 保罗 G 您可能会在 soac 提供的链接中找到一些更好的信息
  • 如何使用 srlua 制作可执行的 Lua 脚本?

    我的主要目标是使我的 lua 文件成为可执行文件或使其成为咬代码 最好是两者皆有 我正在尝试 srlua 但在自述文件中它告诉我要做的事情 对于Windows 您需要首先创建srlua exe和glue exe 然后为每个 你想把Lua程序
  • Lua 访问表的键和值

    我想在关卡编辑器中读取 Lua 文件 这样我就可以以可视化格式显示其数据供用户编辑 如果我有一个像这样的 Lua 表 properties Speed 10 TurnSpeed 5 Speed显然是关键并且10价值 我知道如果我知道像这样的

随机推荐