def total_size(): file1: FileParams = get_params(request, FileParams, NN=True) file2: FileParams = get_params(request, FileParams, params.parent_path) temp_dict = filter_null_dict(file1) if file2.parent_path == "/": # 计算所有 total_size = FileModel.get_total_size(temp_dict) else: temp_dict.update(filter_null_dict(file2)) total_size = FileModel.get_total_size(temp_dict) Successful_response(data=total_size)
def file_list(): file: FileParams = get_params(request, FileParams, params.parent_path, NN=True) c = FileModel.get_file_list(**filter_null_dict(file)) data = {"items": [ {params.file_name: i.file_name, params.is_dir: i.is_dir, params.update_date: time_format(i.update_date), params.size: size_pack(i.size), } for i in c], params.parent_path: file.parent_path} return Successful_response(data=data)
def file_delete(): file: FileParams = get_params(request, FileParams, params.file_name, params.parent_path, NN=True) disc_is_dir, disc_id = FileModel.delete_file_record(filter_null_dict(file)) if not disc_is_dir: count, disc_name = DiscModel.count_crease(disc_id, is_add=False) if count <= 0: DiscModel.delete_sql(DiscModel, dict(id=disc_id)) delete_file(disc_name) return Successful_response("删除成功")
def download(): file: FileParams = get_params(request, FileParams, params.file_name, params.parent_path, NN=True) disc_id = FileModel.get_disc_id(**filter_null_dict(file)) disc_name = DiscModel.get_disc_name(disc_id) disc_full_name = file_exist_in_disc(disc_name) return Response(stream_with_context(read_file_chunks(disc_full_name)), headers={ 'Content-Disposition': f'attachment; filename={file.file_name}' })
def file_uuid(): file_u = f"{uuid.uuid1()}{genRandomString(4)}" # 生成uuid print(file_u) vaild_date: Share_Anal_Params = get_params(request, Share_Anal_Params, params_Ana.file_path, params_Ana.file_name, NN=True) #pool = redis.ConnectionPool(host='127.0.0.1', port=5000, db=0) # 设置过期时间 #r = redis.StrictRedis(connection_pool=pool) #redis.expire(vaild_date.file_name, 60) vaild_date.file_uuid = file_u ShareModel(**filter_null_dict(vaild_date)).add() return file_u
def upload(): file: FileParams = get_params(request, FileParams, params.file_name, params.is_dir, params.parent_path, NN=True) file.size, file.disc_id = None, None # TODO 考虑提取 if (not file.file_name == None) and (not file.file_name.find("/") == -1): Error_response("错误的文件名,文件夹名") if (not file.parent_path == None) and (not file.parent_path.startswith("/")): Error_response("错误的路径") if not file.is_dir: # 不是目录 files = request.files # my_file = files.get(params.file) if my_file == None: Error_response.you_ip_has_been_recorded() file.file_name = my_file.filename file.md5, file.size = get_file_md5_size(my_file) d = DiscModel.find_md5(file.md5) if d[0]: # 如果数据库中没有这条 disc_name = generate_disc_name() save_file(my_file, disc_name) # 增加 返回 id # 不值得使用type_params修改,因为要创建一个新的对象,然后去赋值,不如直接赋值 file.disc_id = DiscModel(md5=file.md5, disc_name=disc_name).id else: # 如果数据库中有这条 file.disc_id = d[1] DiscModel.count_crease(file.disc_id, is_add=True) my_file.close() print(file.md5) FileModel(**filter_null_dict(file, exclude={params.md5})).add() return Successful_response("创建/上传成功")
def rename(): file1: FileParams = get_params(request, FileParams, params.file_name, params.parent_path, NN=True) file2: FileParams = get_params(request, FileParams, params.new_name) FileModel.update_file_name(filter_null_dict(file1), filter_null_dict(file2), params.file_name) Successful_response("改名成功")
def registered(): user: PersonParams = get_params(request, PersonParams, params.name, params.passwd) user.passwd = generate_password_hash(user.passwd) PersonModel(**filter_null_dict(user)).add() Successful_response("注册成功")