Невозможно загрузить файл из GUI - PullRequest
0 голосов
/ 08 мая 2020

Я пытаюсь загрузить файл в настраиваемом режиме просмотра. Файл загружается в следующей форме:

<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 успешно загрузить мой файл? Заранее спасибо.

1 Ответ

0 голосов
/ 14 мая 2020

В конце концов, я заменил кнопку на кнопку отправки без вызова какой-либо функции:

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

Процесс загрузки, который я использовал, был похож на тот, который вы видите в controller/admin/system.lua в функции action_flashops()

...