vue-python前后端下载文件
程序员文章站
2024-03-20 14:37:46
...
两种方式:
- pyhton后端下载文件,访问url的形式将文件下载到本地,然后通过文件流传到前端。或者直接将本地文件传递到前端。
- 仅前端通过url的形式直接下载,此时需要借助a标签。
下面试两种方式的代码例子:
方法一:
# Pyhton后端下载文件
def urlcallback(a, b, c):
"""
call back function
a,已下载的数据块
b,数据块的大小
c,远程文件的大小
"""
print "callback"
prec = 100.0 * a * b / c
if 100 < prec:
prec = 100
print "%.2f%%" % (prec,)
def main():
"""
main
"""
print "start..."
urllib.urlretrieve(
"/home/zhangze/Downloads/sogoupinyin_2.3.1.0112_amd64 (1).deb", "./tmp", urlcallback)
print "end..."
随后将文件内容全部读出保存再content中,返回给前端。{“content”:content}
如果是服务器本地文件,则直接将文件读出返回。
// 前端代码,通过创建Blob实例,来讲ajax请求获取的上述content内容写入到文件中。这里的name是文件名。
let url = window.URL.createObjectURL(new Blob([content])); //处理文档流
console.log(url);
// let fileTye = url.match(/.+\/(.+)$/)[1];
let link = document.createElement("a");
link.style.display = "none";
link.href = url;
link.download = name;
document.body.appendChild(link);
link.click();
document.body.removeChild(link);
方法二:
直接跳过后台,仅需要前端通过url直接下载远程文件,这时候需要url是有效的。
download写个封装,直接调用就可,url为有效url路径,name是保存的文件名。
```javascript
download(name, url) {
var a = document.createElement("a");
var e = document.createEvent("MouseEvents");
e.initMouseEvent("click", false, false);
a.href = url;
a.download = name;
a.dispatchEvent(e);
},
上一篇: axios实现文件下载,附前后端代码
下一篇: 顺序表的描述及实现
推荐阅读