netdisk 基于Flask的个人网盘
·
netdisk 基于Flask的个人网盘/局域网/在线
git:https://github.com/Liubingzhe-888/neDisk
功能
管理员:
- 文件上传 进度条更新上传进度和文件上传类型限制
- 文件下载 静态文件夹返回
- 文件删除 选中checkbox进行删除
- 文件预览 使用浏览器预览能力
- 文件移动
- 新建文件夹
- 文件分享
- 分享链接管理
- 信息查看
- 取消分享
访客:
- 分享链接访问
- 密码输入
- 信息查看
- 下载
技术栈
前端:
- layui
- js
后端: - flask
采用flask渲染静态页面 使用ajax进行数据交互
难点
1 如何实现文件夹和文件的关系——仿照树的数据结构思想
2 递归删除或者移动文件夹和其中文件,对于操作数据库应该如何实现
def delete_in_dir(file_name):
belong_file = File.query.filter_by(file_superior_dir = file_name).all()
for i in belong_file:
if i.file_type=='dir':
delete_in_dir(i.id)
db.session.delete(i)
else:
os.remove(os.path.join(SAVE_PATH,i.file_real_name))
db.session.delete(i)
数据库结构:
# 文件类型
class File(db.Model):
"""
"""
__tablename__ = 'file'
id = db.Column(db.Integer, primary_key=True) # 文件id
file_real_name = db.Column(db.Text)#文件真实名称
file_name = db.Column(db.Text)#文件名称
file_save_path = db.Column(db.Text)#文件储存位置
file_create_time = db.Column(db.DateTime)#文件上传时间
file_type = db.Column(db.String(6))#文件类型
file_size = db.Column(db.Integer)#文件大小
file_upload_user = db.Column(db.Text)#文件上传者
file_superior_dir = db.Column(db.Integer)#文件目录
file_path = db.Column(db.Text)#文件下载地址
file_level = db.Column(db.Integer)# 文件所在层
# 分享链接
class Share(db.Model):
__tablename__ = 'share'
"""
分享链接id
分享文件名称
分享链接有效时间
分析文件url
链接访问次数
链接密码
分享文件id
"""
id = db.Column(db.Integer, primary_key=True)
share_file_name = db.Column(db.Text)
share_last_time = db.Column(db.DateTime)
share_url = db.Column(db.Text)
share_view_time = db.Column(db.Integer)
share_password = db.Column(db.Text)
share_file_id = db.Column(db.Integer)
截图
首页:

文件上传:

上传完成:

分享:

管理:

文件移动:

更多推荐
所有评论(0)