首页 > 解决方案 > 如何通过javascript将选定的文件路径传递给python脚本

问题描述

我正在使用eel为我的项目创建一个简单但干净的 GUI。在这个项目中,我有一个自定义数据库,我在需要时腌制/更新/取消腌制。从本地网络服务器,我选择文件并单击提交按钮。然后我将文件目录传递给以后在 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 脚本中,这会更容易,因为后端已经为项目完成了很多工作。任何帮助表示赞赏。提前致谢!

标签: javascriptpythonhtmleel

解决方案


这与 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


推荐阅读