Ejemplo n.º 1
0
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)
Ejemplo n.º 2
0
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
Ejemplo n.º 3
0
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