Javascript 如何从HTML页面提供Python pickle文件

Javascript 如何从HTML页面提供Python pickle文件,javascript,python,pickle,Javascript,Python,Pickle,我试图允许通过从Flask应用程序下载Python pickle文件 导入pickle 从烧瓶导入烧瓶,呈现\u模板\u字符串 app=烧瓶(名称) 模板=“”“ 下载 函数下载_文件(){ mime_type='{{mime_type}}}'; var blob=新blob([{{file_content}}],{type:mime_type}); var dlink=document.createElement('a'); dlink.download='pickle.pkl'; dlink

我试图允许通过从Flask应用程序下载Python pickle文件

导入pickle
从烧瓶导入烧瓶,呈现\u模板\u字符串
app=烧瓶(名称)
模板=“”“
下载
函数下载_文件(){
mime_type='{{mime_type}}}';
var blob=新blob([{{file_content}}],{type:mime_type});
var dlink=document.createElement('a');
dlink.download='pickle.pkl';
dlink.href=window.URL.createObjectURL(blob);
dlink.onclick=函数(e){
//revokeObjectURL需要延迟才能正常工作。
var=这个;
setTimeout(函数(){
window.URL.revokeObjectURL(that.href);
}, 1500);
};
document.body.appendChild(dlink);
dlink.click();
dlink.remove();
}
"""
@附件路线(“/”)
def下载():
返回渲染模板字符串(
模板,
文件内容=pickle.dumps(“文本”),
mime_type=“应用程序/八位字节流”,
)
虽然下载文件工作正常,但下载的文件本身似乎已损坏,因为我在读取文件时遇到以下错误

Python 3.7.6 |由conda forge打包|(默认,2020年3月23日,23:03:20)
有关详细信息,请键入“版权”、“信用”或“许可证”
IPython 7.14.0——一种增强的交互式Python。键入“?”以获取帮助。
[1]中:进口腌菜
在[2]中:以open(“pickle.pkl”、“rb”)作为f:
…:酸洗负荷(f)
...:                                                                                                                                                                                                            
---------------------------------------------------------------------------
取消勾选错误回溯(最后一次最近呼叫)
在里面
1以开放(“pickle.pkl”、“rb”)作为f:
---->2酸洗负荷(f)
3.
取消勾选错误:取消勾选堆栈下溢
关于下载脚本的问题有什么提示吗


谢谢你的帮助。

基本上,你只需要改变两件事:

  • download()
    方法中,需要将序列化字节转换为整数列表
  • 然后,您需要更改JavaScript代码以读取此数字列表
因此,您的代码应该如下所示:

导入pickle
从烧瓶导入烧瓶,呈现\u模板\u字符串
app=烧瓶(名称)
模板=“”“
下载
函数下载_文件(){

让bytes_array=newuint8array({{file_content}});//Pickle文件不是用于分发的。它们依赖于相同的代码、Python版本、体系结构和其他一些东西。最后但并非最不重要的一点是:加载它们是不安全的。谢谢!我意识到,通过直接读取bytes
列表(Path(file_Path)。read_bytes())
,可以平等地对待所有文件。