如何通过 javascript 将选定的文件路径传递给 python 脚本

How to pass selected file path to python script via javascript

我正在使用 eel 为我的项目创建一个简单但干净的 GUI。在这个项目中,我有一个自定义数据库,需要时我会 pickle/update/unpickle。从本地网络服务器,我 select 文件并单击提交按钮。然后我将文件目录传递给以后在 python 脚本中读取。我的结构如下;

HTML

我有两个简单的元素,一个按钮和一个输入

<input type="file" id="file-upload">
<input class="btn btn-success" type="submit" onClick="get_input_directory()" value="Send">

JS

function get_input_directory() {
    var data = document.getElementById("file-uploader").value
    eel.get_input(data)
}

Python

目前我只打印目录如果我做对了。

@eel.expose
def get_input(data):
    print(data)

我打算稍后做的是使用脚本将数据库解压到我的程序中:

with open(file_dir, "rb") as f:
    mdl = pickle.load(f)
    return mdl

但我的数据库文件打印为:

C:/fakepath/database.file

我在网上搜索了一下,发现这是浏览器实施的一项安全措施,但我尝试了 FileReader 方法将文件直接传递给 unpickling 函数,但也没有说不存在这样的文件。

我应该用什么来解决这个问题,或者有没有办法将目录传递到 python 脚本中,这会容易得多,因为后端已经为项目完成了很多工作。任何帮助表示赞赏。提前致谢!

这与您的计算机上没有完整存在的 JS 有关。 最好的办法是在 python/eel 中添加文件处理程序。 因为 python 确实可以完全访问您计算机的路径:

@eel.expose
def btn_ResimyoluClick():
    root = Tk()
    root.withdraw()
    root.wm_attributes('-topmost', 1)
    folder = filedialog.askdirectory()
    return folder

复制自: https://github.com/samuelhwilliams/Eel/issues/86