基于vue.js+python+mysql实现的网页文件系统
项目介绍
本项目是基于python语言和vue实现的一个网页文件系统,功能还算可以,项目中一些地方也用到了加密算法。
功能介绍
用户功能
- 登录,注册,修改密码;
- 在公共的文件区域可以浏览、下载其他用户上传的文件也可以上传文件到公共区;
- 对于自己的文件收藏可以浏览、下载、上传、删除文件;
- 用户之间也可以通过分享文件生成的链接来进行文件传输;
部分功能图片
管理员功能
- 管理员拥有用户的所有功能,同时可以管理用户,可以删除用户,修改用户的密码和设置用户的身份;
- 对用户上传到公共区的文件进行删除操作;
部分功能图片
部分后端代码
1.用户登录
利用post方式前端向后端传递表单,进行用户名,密码验证,密码在前端进行了md5加密
代码片
.
def login_login():
if request.method == "POST":
username = request.form.get("username")
password = request.form.get("password")
cursor.execute("select id,username,role,ctime from login where username=\""
+str(username)+"\" and password=\""+str(password)+"\"")
data = cursor.fetchone()
if(data!=None):
print("result:",data)
jsondata = {"id":str(data[0]),"username":str(data[1]),
"role":str(data[2]),"ctime":str(data[3])}
return jsonify(jsondata)
else:
print("result: NULL")
jsondata = {}
return jsonify(jsondata)
2.文件上传
文件传递到后端后,后端会获取到文件的相关内容,同时后以二进制的形式读出文件,并计算出文件的MD5值以进行文件验证,同时将文件的相关内容写入数据库。文件后上传到设置好的路径。
代码片
.
def upload():
if request.method == 'POST':
f = request.files['file']
global Uname
autor = Uname
print(autor)
basedir = os.path.dirname(__file__)
ctime = time.strftime('%Y-%m-%d %H:%M:%S',time.localtime(time.time()))
file_path = os.path.join(basedir,'myFavorite/uploads/file1',f.filename)
f.save(file_path)
m = hashlib.md5()
mfile=open(file_path,'rb')
data = mfile.read(1024)
while data:
m.update(data)
data = mfile.read(1024)
cmd5 = m.hexdigest()
mfile.close()
try:
cursor.execute("insert into file(fname,autor,ctime,cmd5) values (\""
+str(f.filename)+"\",\""+str(autor)+"\",\""
+str(ctime)+"\",\""+str(cmd5)+"\")")
db.commit() #提交,使操作生效
print("add a new favorite successfully!")
return "上传成功"
except Exception as e:
print("add a new favorite failed:",e)
db.rollback() #发生错误就回滚
return "上传失败"
- 浏览功能
前端通过windows。Open函数打开后端链接进行文件浏览
代码片
.
def get_images(filename):
basedir = os.path.dirname(__file__)
file_path = os.path.join(basedir,'myFavorite/uploads/file1')
print(file_path)
return send_from_directory(file_path,filename)
4 . 文件下载
利用return send_from_directory(dirpath, filename, as_attachment=True)方法实现浏览器下载文件,文件的下载路径为浏览器的默认路径
代码片
.
def downloads(filename):
dirpath = os.path.join(app.root_path, 'myFavorite/uploads/file1')
return send_from_directory(dirpath, filename, as_attachment=True)
这是一个期末作业,简单记录一下,功能不是特别完善。