无法通过GUI上传文件

我正在尝试在自定义视图中上传文件。文件以以下形式上传:

<form id="logo-splash-form" action="<%=luci.dispatcher.build_url("admin/system/upload")%>">
    <input id="logo-splash" name="logo-splash" type="file" />
    <input type="button" value="Upload" onclick="fileUpload('logo-splash')" />
</form>

使用以下js函数:

function fileUpload(fileName)
{
    var url = '<%=luci.dispatcher.build_url("admin/system/upload")%>';
    document.getElementById('logo-splash-form').enctype = 'multipart/form-data';
    document.getElementById('logo-splash-form').submit();
}

以及以下控制器:

function upload()
    local fp
    local sys = require "luci.sys"
    local path = "/etc/mypath/"
    local ul = luci.http.formvalue("logo-splash")
    local file   = "test.jpg"
    -- 文件上传
    luci.http.setfilehandler(
        function(meta, chunk, eof)
            if not fp then
                fp = io.open(path .. meta.file, "w")
            end
            if chunk then
                fp:write(chunk)
            end
            if eof then
                fp:close()
            end
        end
    )
    luci.http.redirect(luci.dispatcher.build_url('admin/system/splashscreen'))
end

然而没有任何事情发生。文件没有被创建,而且使用logread也没有看到任何错误消息。

我不知道为什么 setfilehandler 似乎没有被调用,现在我陷入了这个问题...

我正在使用一个大小约为10ko的小jpg文件test.jpg进行上传,所以我不认为这是一个大小问题。

如何使setfilehandler 成功上传我的文件?先谢谢。

点赞
用户3253883
用户3253883

最后我用一个提交按钮来替换了按钮, 且没有调用任何方法:

<input type="submit" class="cbi-input-apply" value="<%:Upload%>" />

我使用的上传过程类似于 controller/admin/system.lua 中的 action_flashops() 函数中可以看到的过程。

2020-05-14 10:16:13