def file_del(file_url_obj): """ 需要提供一个路径字典 :param file_url_obj: :return: """ # 检测插件 data = plugin_manager.call_plug(hook_name="file_storage", action="delete", file_url_obj=file_url_obj) if data == "__no_plugin__": path = get_localfile_path(file_url_obj=file_url_obj) return local_file_del(path=path)
def file_rename(file_url_obj, new_filename): """ 需要提供一个本系统定义的文件字典 :param filedict: :return: """ # 检测插件 data = plugin_manager.call_plug(hook_name="file_storage", action="delete", file_url_obj=file_url_obj, new_filename=new_filename) if data == "__no_plugin__": path = get_localfile_path(file_url_obj=file_url_obj) file_format = os.path.splitext(path)[-1] new_path = "{}/{}{}".format( os.path.split(path)[0], os.path.split(path)[1], file_format) os.rename(path, new_path) return True else: return data
def copy_file(from_file_url_obj=None, from_path=None, replica_prefix="", replica_file_name=None, replica_file_format=None): """ 文件复制,同一个区域的文件才可以复制 :param file_url_obj:和from_path二选1 :param from_path: :param replica_prefix: :param replica_file_name: :param replica_file_format: :return: """ # 如果自定义名字 if replica_file_name: filename = '{}.{}'.format(replica_file_name, replica_file_format) else: filename = '{}-{}.{}'.format(time_to_utcdate(time_stamp=time.time()), uuid1(), replica_file_format) if replica_prefix: filename = "{}{}".format(replica_prefix, filename) filename = filename.replace("//", "/") if from_file_url_obj: if from_file_url_obj['type'] == "local": # 是复制本地图片 from_local_path = get_localfile_path(from_file_url_obj) # 文件保存的绝对路径 save_file_path = "{}/{}/{}".format( STATIC_PATH, get_config("upload", "SAVE_DIR"), filename).replace("//", "/") # 文件保存到本地服务器端 save_dir = os.path.split(save_file_path)[0] if not os.path.exists(save_dir): os.makedirs(save_dir) shutil.copyfile(from_local_path, save_file_path) result = { "key": filename, "bucket_name": None, "d": None, "type": "local" } return result else: # 检图床插件 data = plugin_manager.call_plug(hook_name="file_storage", action="copy_file", file_url_obj=from_file_url_obj, filename=filename) if data == "__no_plugin__": return None else: return data elif from_path: # 检图床插件 data = plugin_manager.call_plug( hook_name="file_storage", action="upload", localfile_path=from_path, filename=filename, ) if data == "__no_plugin__": # 文件保存的绝对路径 save_file_path = "{}/{}/{}".format( STATIC_PATH, get_config("upload", "SAVE_DIR"), filename).replace("//", "/") # 文件保存到本地服务器端 save_dir = os.path.split(save_file_path)[0] if not os.path.exists(save_dir): os.makedirs(save_dir) shutil.copyfile(from_path, save_file_path) result = { "key": filename, "bucket_name": None, "d": None, "type": "local" } return result else: return data