一、作业需求

1. 用户加密认证(已完成)

2. 多用户同时登陆(已完成)

3. 每个用户有自己的家目录且只能访问自己的家目录(已完成)

4. 对用户进行磁盘配额、不同用户配额可不同(已完成)

5. 用户可以登陆server后,可切换目录(已完成)

6. 查看当前目录下文件(已完成)

7. 上传下载文件,保证文件一致性(已完成)

8. 传输过程中现实进度条(已完成)

9. 支持断点续传(未完成)

readme:

 

一、作业需求:
1. 用户加密认证(已完成)
2. 多用户同时登陆(已完成)
3. 每个用户有自己的家目录且只能访问自己的家目录(已完成)
4. 对用户进行磁盘配额、不同用户配额可不同(已完成)
5. 用户可以登陆server后,可切换目录(已完成)
6. 查看当前目录下文件(已完成)
7. 上传下载文件,保证文件一致性(已完成)
8. 传输过程中现实进度条(已完成)
9. 支持断点续传(未完成)
二、博客地址:http://www.cnblogs.com/catepython/p/8616018.html
三、运行环境
操作系统:Win10
Python:3.6.2rcl
Pycharm:2017.1.14
四、功能实现
1)多用户同时登录,并做了用户不得重复登录判断(现为测试方便此调用方法已注释)
2)区分不同用户不同的文件目录
3)可在当前目录下上传/下载文件并保存
4)上传/下载文件进度显示
5)区分了用户本地/服务端文件目录
6)只能移动到自己家目录下的目录
cd /:移动到根目录下 cd ..:返回上一级目录 cd + 目录名:移动到指定目录下
7)新增pwd查看当前路径操作
8)查看当前目录下文件信息
新增dir home:查看用户本地目录文件信息 dir server:查看用户服务端目录文件信息
9)每个用户有不同的磁盘配额
10)上传/下载文件后进行加密认证
11)新增mkdir操作:在当前目录下创建新目录文件
五、测试
1)文件名为空判断
2)用户信息判断
3)指令格式化判断
4)用户使用cd指令对其做了isdir()判断
5)用户使用mkdir指令时对其做了当前目录下已有同名目录判断
6)上传/下载到指定路径判断
例:
1、当前在根目录下:E:.....\user_home
上传/下载文件完成后文件保存至根目录下
2、当前路径:E:.....\user_home\test\test2
上传/下载文件完成后文件保存在test2目录下
7)在当前路径下创建新目录文件
例:
1、当前在根目录下:E:.....\user_home
使用mkdir命令在根目录下创建新目录
2、当前路径:E:.....\user_home\test\test2
使用mkdir命令在E:.....\user_home\test\test2目录下创建新目录
8)上传/下载文件后进行加密认证:对本地文件与服务端文件做了mk5加密认证
9)做了多用户登录上传/下载
10)当用户配额<上传/下载文件时会做“磁盘配额不足无法上传/下载文件”提示
六、备注
1、断点续传功能有空时可以新增并完善
readme

 

 

 

二、流程图

 高级FTP

三、目录结构图

高级FTP

 

四、代码区

bin目录下程序开始文件

#-*- Coding:utf-8 -*-
# Author: D.Gray
import os,sys
BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
sys.path.append(BASE_DIR)
from core import ftp_client
fc = ftp_client.Ftp_client()
start_client.py
#-*- Coding:utf-8 -*-
# Author: D.Gray
import os,sys
BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
sys.path.append(BASE_DIR)
from core import ftp_server
fs = ftp_server.Ftp_server()
start_server.py

conf目下的setting.py系统配置文件

#-*- Coding:utf-8 -*-
# Author: D.Gray
import os,sys,socket
BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
sys.path.append(BASE_DIR)
#IP和端口信息
IP_PORT = ("localhost",6969)
#用户数据文件
USER_FILE = os.path.join(BASE_DIR,'db\\user_info')
#用户文件目录
USER_HOME = BASE_DIR
setting.py

相关文章: