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)

截图

首页:

在这里插入图片描述

文件上传:

在这里插入图片描述

上传完成:

在这里插入图片描述

分享:

在这里插入图片描述

管理:

在这里插入图片描述

文件移动:

在这里插入图片描述

Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐