- 85
- 0
- 使用scandir库列出了文件夹中的文件,但是当文件比较多(6万多)时候,浏览器就崩溃了
- 试过yield,但是下次请求时候还是返回前10条
大家有没有好的解决方法,求教
- 共 0 条
- 全部回答
-
思念不聽話、自己跑出來 普通会员 1楼
要实现分页返回一个文件夹中的6万条文件信息,我们可以使用Python的Flask框架,结合数据库来存储文件信息。以下是一个简单的示例:
首先,确保你已经安装了Flask和Flask-SQLAlchemy库。你可以使用以下命令安装:
bash pip install Flask Flask-SQLAlchemy然后,创建一个名为
app.py的文件,编写以下代码:```python from flask import Flask, render_template, request, redirect, url_for from flask_sqlalchemy import SQLAlchemy from sqlalchemy.orm import sessionmaker from flask_bcrypt import Bcrypt
app = Flask(name) app.config['SECRET_KEY'] = 'your_secret_key' app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///file_folder.db' db = SQLAlchemy(app) bcrypt = Bcrypt(app)
class File(db.Model): id = db.Column(db.Integer, primary_key=True) name = db.Column(db.String(255), nullable=False) file_path = db.Column(db.String(255), nullable=False)
def __init__(self, name, file_path): self.name = name self.file_path = file_path@app.route('/') def index(): return render_template('index.html')
@app.route('/files', methods=['GET']) def files(): if request.args.get('page') == '1': files_per_page = 60000 start = request.args.get('start', 0) end = min(start + files_per_page, 60000) else: files_per_page = 1000 start = 0 end = 60000 if start >= end: start = 0 files = File.query.filter_by(file_path=start).order_by(File.name).all() return render_template('files.html', files=files)
@app.route('/upload', methods=['POST']) def upload_file(): if request.files['file']: file = request.files['file'] file.save('file_folder', File(file.path)) return redirect(url_for('index')) else: return render_template('upload.html')
if name == 'main': app.run(debug=True) ```
在这个示例中,我们首先创建了一个名为
File的类,用于存储文件信息。然后,我们创建了一个Flask应用,并配置了数据库连接。接着,我们定义了两个路由:/和/files。/路由返回一个默认的HTML模板,而/files路由根据请求参数page来分页返回文件信息。/files路由首先检查是否有请求参数page。如果有,它会计算出每页的文件数量(60000条),并使用start和end参数来设置起始和结束位置。然后,它会根据文件路径查询数据库并按照名称排序结果。最后,它返回一个HTML模板,其中包含分页的文件列表。/upload路由用于处理文件上传请求。它首先检查是否有文件上传请求。如果有,它会将文件保存到文件夹中,并返回一个重定向到/files的响应。注意:在实际应用中,你可能需要处理文件类型、上传文件大小等其他相关问题。
- 扫一扫访问手机版
回答动态

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器更新之后。服务器里面有部分玩家要重新创建角色是怎么回事啊?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题函数计算不同地域的是不能用内网吧?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题ARMS可以创建多个应用嘛?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题在ARMS如何申请加入公测呀?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题前端小程序接入这个arms具体是如何接入监控的,这个init方法在哪里进行添加?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器刚到期,是不是就不能再导出存档了呢?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器的游戏版本不兼容 尝试更新怎么解决?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器服务器升级以后 就链接不上了,怎么办?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器转移以后服务器进不去了,怎么解决?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器修改参数后游戏进入不了,是什么情况?预计能赚取 0积分收益
- 回到顶部
- 回到顶部
