flask框架中如何通过接口让前端访问当选项目目录下所有文件
时间: 2024-02-13 10:01:28 浏览: 251
Flask框架实战项目源码:复习巩固Flask开发技能的demo演示
5星 · 资源好评率100%
在 Flask 框架中,可以使用 Flask 提供的 send_from_directory 函数来实现这个功能。具体步骤如下:
1. 在 Flask 项目的路由文件中,添加一个接口,用于返回指定目录下的所有文件。
```python
@app.route('/files/<path:path>')
def get_files(path):
return send_from_directory(app.config['UPLOAD_FOLDER'], path, as_attachment=True)
```
这个接口的 URL 中包含一个 path 参数,表示要访问的文件路径。在函数中,使用 send_from_directory 函数来返回指定目录下的文件。其中,app.config['UPLOAD_FOLDER'] 表示指定的目录,可以在 Flask 应用的配置中设置。
2. 在前端页面中,使用 AJAX 请求访问这个接口,并将返回的文件流保存到本地。
```javascript
$.ajax({
url: '/files/path/to/file',
type: 'GET',
xhrFields: {
responseType: 'blob'
},
success: function(data) {
var a = document.createElement('a');
var url = window.URL.createObjectURL(data);
a.href = url;
a.download = 'filename';
a.click();
window.URL.revokeObjectURL(url);
},
error: function(xhr, status, error) {
console.log(error);
}
});
```
这里使用 jQuery 的 AJAX 函数来访问接口,并将返回的文件流保存到本地。其中,xhrFields 可以设置返回的数据类型为 blob,方便后续操作。在 success 回调函数中,创建一个 a 标签,并将文件流 URL 赋值给 href 属性,然后设置 download 属性为要保存的文件名,最后触发 a 标签的 click 事件来下载文件。
阅读全文