Django网盘制作

记录自己编写的网盘,支持登录、注册、文件上传、文件下载,不同的用户只能操作自己的文件,在环境准备阶段附赠自己的源代码,请大佬勿喷,还有很多hug未修改,麻烦大家一键三连哦。

网盘功能

1.可视化
2.普通文件上传与下载
3.文件上传(docker搭建的hadoop平台)
4.文件下载(同上)
5.注册登录,用户规约

实现思路

1.数据库的搭建,文件保存,用户信息关联
2.测试本地连接hadoop
3.先完成基本的文件上传与下载
4.hadoop平台上传与下载

环境准备

1.django=2.2
2.python=3.7
3.pyhdfs   (hadoop连接第三方库)
4.mysqlclient   (mysql驱动程序)

环境连接
django环境搭建,请参照csdn链接
docker搭建的hadoop:csdn链接
简易版代码(未套html模板):csdn链接
界面版代码(配有html模板):csdn链接

流程图

实现过程思路如下

在这里插入图片描述
数据库创建思路
在这里插入图片描述
业务逻辑
数据全部存在一个文件夹,每一个用户有独立的文件空间,以用户ID创建文件夹,用户上传的文件,统一改名为:ID+时间,每一个用户只能看到自己的文件,以及上传、修改、删除自己的文件。
在这里插入图片描述

核心代码解析

1. 文件上传

通过input标签的tupe=file获取文件,通过**request.FILES.get(“file”)**得到上传的文件,本地进行保存。

# 文件保存
def save_file(file, filepath):
    with open(filepath, 'wb+') as f:
        for data in file.chunks():
            f.write(data)
 # 上传文件
<input type="file" name="file">
# 获取文件
file = request.FILES.get("file")  # 获取文件数据
2.文件下载

请各位自行搜索,本人未清楚原理

def download(request, fileid):
    # 本地下载
    # 通过文件id,从数据库获取名字
    file = Yunpan.objects.get(id=fileid).name
    # 通过文件id,从数据库获取文件保存路径
    file_path = Yunpan.objects.get(id=fileid).filepath
    response = FileResponse(open(file_path, 'rb'))
    response['Content-Type'] = 'application/octet-stream'
    # 网上博客部分未添加escape_uri_path,下载的文件为down,不是任意文件
    response['Content-Disposition'] = "attachment; filename*=UTF-8''{}".format(escape_uri_path(file))   
    return response
3.用户ID及名字保存

通过session保存信息,从而判断用户是否登录

# 设置session
request.session['user_id'] = UserInfo.objects.get(usename=user_name).id
                request.session['user_name'] = user_name
# 调用session值
user_id = request.session["user_id"]  # 用户id

# 清空session值



def logout(request):
    request.session.clear()  # 删除session里的全部内容
    return redirect('/index')
4.删除本地文件、hadoop文件、数据库文件
savepath = os.path.join(downpath, file)
hdp_path = Yunpan.objects.get(id=fileid).hdfpath
fs.copy_to_local(hdp_path, savepath)

setting设置

通过在setting.py设置路径,可以简约逻辑判断的路劲编写,也便于路径修改

filepath = os.path.join(BASE_DIR, 'datas')       # 上传到本地的路径
hdppath = "/test/"                               # 上传到hdp的路径
downpath = os.path.join(BASE_DIR, 'pdfDownload')    # 下载到本地的路径
fs = pyhdfs.HdfsClient(hosts="虚拟机ip:50070", user_name="root")         # 连接到hadoop

docker镜像安装

1.导入镜像
Docker load -i hdp.tar

2.拉取容器:
docker run -dit --name hdp -h master -p 50070:50070 -p 8020:8020 -p 50075:50075 -p 50010:50010 -p 50020:50020 -v hdp-vol:/data hdpv2

3.配置本机hosts
地址:C:\Windows\System32\drivers\etc

  • 1
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

野人秋桐

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值