一、作业需求
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 est est2 上传/下载文件完成后文件保存在test2目录下 7)在当前路径下创建新目录文件 例: 1、当前在根目录下:E:.....user_home 使用mkdir命令在根目录下创建新目录 2、当前路径:E:.....user_home est est2 使用mkdir命令在E:.....user_home est est2目录下创建新目录 8)上传/下载文件后进行加密认证:对本地文件与服务端文件做了mk5加密认证 9)做了多用户登录上传/下载 10)当用户配额<上传/下载文件时会做“磁盘配额不足无法上传/下载文件”提示 六、备注 1、断点续传功能有空时可以新增并完善
二、流程图
三、目录结构图
四、代码区
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()
#-*- 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()
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
core目录下主程序文件
#-*- Coding:utf-8 -*- # Author: D.Gray import sys,os,socket,hashlib,time,json from conf import setting from core import users class Ftp_client(object): ''' FTP客服端 ''' def __init__(self): ''' 构造函数 ''' self.client = setting.socket.socket() self.client.connect(setting.IP_PORT) self.help_info = """