无法从GUI上传文件

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了无法从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"
    -- FILE UPLOAD  
    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 似乎没有被调用,我现在被这个问题卡住了......

我是用一个小的jpg文件test.jpg测试上传的,10ko左右,所以我觉得不是大小问题。

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

答案

最后我用一个提交按钮代替了按钮,没有调用任何函数。

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

我所使用的上传过程与你能看到的类似于 controller/admin/system.lua,在函数中 action_flashops()

以上是关于无法从GUI上传文件的主要内容,如果未能解决你的问题,请参考以下文章

GUI__文件上传__driver对象

github使用 gui使用 上传文件

无法使用 Alamofire 从数组上传多个文件

无法从不同目录上传文件

无法从动态生成的文件上传控件中保存文件

无法从 eclipse 上传文件到设备