Python3 / JS - Как мне обрабатывать локальную загрузку файлов с помощью eel?
В настоящее время я работаю над локальным электронным программным обеспечением с Eel.
Это программное обеспечение предназначено для использования в качестве отдельного приложения Windows, которое необходимо запускать на локальном компьютере пользователя.
В этом программном обеспечении я хочу иметь возможность выбирать локальные файлы и работать с ними на сервере Python. Для доступа к файлу я использую HTML<form>
с <input type='file' />
.
Мне интересно, как я должен обрабатывать загрузку локальных файлов в этой структуре, поскольку, в отличие от электрона, нет dialog.showOpenDialog()
функция доступна в ванильном JavaScript.
Следующий вопрос помогает другому пользователю Electron, но я искал обходной путь в ванильным ES6.
заранее спасибо
1 ответ
После того, как я поигрался с JS и HTML5 File API (и очень не смог получить ожидаемый результат), я вспомнил, что я парень Python.
Самое простое решение этой проблемы, которое пришло мне в голову, - позволить Python управлять файлами. Итак, вместо HTML<input type='file'>
, Я создаю кнопку с функцией onclick JS:
<button type="button" onclick="getPathToFile()">Select File</button>
<script type="text/javascript">
function getPathToFile() {
eel.pythonFunction()(r => console.log(r);
};
</script>
Тем временем я позволяю Python обрабатывать диалоговое окно файла на бэкэнде:
import wx
import eel
@eel.expose
def pythonFunction(wildcard="*"):
app = wx.App(None)
style = wx.FD_OPEN | wx.FD_FILE_MUST_EXIST
dialog = wx.FileDialog(None, 'Open', wildcard=wildcard, style=style)
if dialog.ShowModal() == wx.ID_OK:
path = dialog.GetPath()
else:
path = None
dialog.Destroy()
return path
Затем в консоли JavaScript вы получите [1] path/to/selected/file
.
Этот метод также позволяет вам выполнять действия с файлом, как если бы вы были в Python (анализировать, сохранять, изменять,...), и отображать информацию с помощью графического интерфейса пользователя HTML / CSS / JavaScript.
Довольно аккуратно.