Пример #1
0
def upimg_save(**kwargs):
    res = dict(code=1)
    try:
        filename = kwargs["filename"]
        stream = kwargs["stream"]
        upload_path = kwargs.get("upload_path") or ""
        if not filename or not stream:
            return ValueError
    except (KeyError, ValueError):
        res.update(msg="Parameter error")
    else:
        dn = g.cfg.tencent_dn
        bucket = g.cfg.tencent_bucket
        sid = g.cfg.tencent_sid
        skey = g.cfg.tencent_skey
        tencent_basedir = g.cfg.tencent_basedir or ''
        if not dn or not bucket or not sid or not skey:
            res.update(msg="The tencent parameter error")
            return res
        if isinstance(upload_path, string_types):
            if upload_path.startswith("/"):
                upload_path = upload_path.lstrip('/')
            filepath = join(tencent_basedir, upload_path, filename)
            #: 使用腾讯云云COS官方SDK上传
            config = get_config()
            region = g.cfg.tencent_region
            if not region:
                info = get_bucket_info(bucket, config)
                if info and isinstance(info, dict) and "Location" in info:
                    region = info['Location']
                    config = get_config(region)
                    set_site_config(dict(tencent_region=region))
            client = CosS3Client(config)
            result = client.put_object(
                Bucket=bucket,
                Key=filepath,
                Body=stream,
                EnableMD5=False
            )
            ETag = result['ETag'].replace('"', '')
            if ETag:
                res.update(
                    code=0,
                    etag=ETag,
                    src=slash_join(dn, filepath),
                    basedir=tencent_basedir,
                )
        else:
            res.update(msg="The upload_path type error")
    return res
Пример #2
0
def upimg_save(**kwargs):
    res = dict(code=1)
    try:
        filename = kwargs["filename"]
        stream = kwargs["stream"]
        upload_path = kwargs.get("upload_path") or ""
        if not filename or not stream:
            return ValueError
    except (KeyError, ValueError):
        res.update(msg="Parameter error")
    else:
        dn = g.cfg.aliyun_dn
        bucket = g.cfg.aliyun_bucket
        ak = g.cfg.aliyun_ak
        sk = g.cfg.aliyun_sk
        aliyun_basedir = g.cfg.aliyun_basedir or ''
        if not dn or not bucket or not ak or not sk:
            res.update(msg="The aliyun parameter error")
            return res
        if isinstance(upload_path, string_types):
            if upload_path.startswith("/"):
                upload_path = upload_path.lstrip('/')
            if aliyun_basedir.startswith("/"):
                aliyun_basedir = aliyun_basedir.lstrip('/')
            filepath = join(aliyun_basedir, upload_path, filename)
            #: 使用阿里云云OSS官方SDK上传
            auth = get_auth()
            endpoint = g.cfg.aliyun_endpoint
            if not endpoint:
                info = get_bucket_info(bucket, auth)
                if info and isinstance(info, dict) and "endpoint" in info:
                    endpoint = info['endpoint']
                    set_site_config(dict(aliyun_endpoint=endpoint))
            obj = Bucket(auth, endpoint, bucket)
            result = obj.put_object(filepath, stream)
            if result.status == 200:
                res.update(
                    code=0,
                    etag=result.etag,
                    src=slash_join(dn, filepath),
                    basedir=aliyun_basedir,
                )
        else:
            res.update(msg="The upload_path type error")
    return res
Пример #3
0
def upimg_save(**kwargs):
    res = dict(code=1)
    try:
        filename = kwargs["filename"]
        stream = kwargs["stream"]
        upload_path = kwargs.get("upload_path") or ""
        if not filename or not stream:
            return ValueError
    except (KeyError, ValueError):
        res.update(msg="Parameter error")
    else:
        try:
            from qiniu import Auth, put_data
        except ImportError:
            res.update(msg="Please install qiniu module")
            return res
        dn = g.cfg.qiniu_dn
        bucket = g.cfg.qiniu_bucket
        ak = g.cfg.qiniu_ak
        sk = g.cfg.qiniu_sk
        qiniu_basedir = g.cfg.qiniu_basedir or ''
        if not dn or not bucket or not ak or not sk:
            res.update(msg="The qiniu parameter error")
            return res
        if isinstance(upload_path, string_types):
            if upload_path.startswith("/"):
                upload_path = upload_path.lstrip('/')
            if qiniu_basedir.startswith("/"):
                qiniu_basedir = qiniu_basedir.lstrip('/')
            saveto = join(qiniu_basedir, upload_path)
            filepath = join(saveto, filename)
            #: 使用七牛云SDK上传
            qn = Auth(ak, sk)
            token = qn.upload_token(bucket, filepath, 60)
            ret, info = put_data(token, filepath, stream)
            if info.ok():
                res.update(ret)
                res.update(
                    code=0,
                    src=slash_join(dn, filepath),
                    basedir=qiniu_basedir,
                )
        else:
            res.update(msg="The upload_path type error")
    return res
Пример #4
0
def upimg_save(**kwargs):
    res = dict(code=1)
    try:
        filename = kwargs["filename"]
        stream = kwargs["stream"]
        upload_path = kwargs.get("upload_path") or ""
        if not filename or not stream:
            raise ValueError
    except (KeyError, ValueError):
        res.update(msg="Parameter error")
    else:
        try:
            from upyun import UpYun, ED_AUTO
        except ImportError:
            res.update(msg="Please install upyun module")
            return res
        dn = g.cfg.upyun_dn
        bucket = g.cfg.upyun_bucket
        user = g.cfg.upyun_username
        passwd = g.cfg.upyun_password
        upyun_basedir = g.cfg.upyun_basedir or "/"
        if not dn or not bucket or not user or not passwd:
            res.update(msg="The upyun parameter error")
            return res
        if isinstance(upload_path, string_types):
            if upload_path.startswith("/"):
                upload_path = upload_path.lstrip("/")
            if not upyun_basedir.startswith("/"):
                upyun_basedir = "/%s" % upyun_basedir
            saveto = join(upyun_basedir, upload_path)
            filepath = join(saveto, filename)
            up = UpYun(bucket, user, passwd, timeout=30, endpoint=ED_AUTO)
            res.update(up.put(filepath, stream))
            res.update(
                code=0,
                src=slash_join(dn, filepath),
                basedir=upyun_basedir,
            )
        else:
            res.update(msg="The upload_path type error")
    return res
Пример #5
0
def upimg_save(**kwargs):
    res = dict(code=1)
    try:
        filename = kwargs["filename"]
        stream = kwargs["stream"]
        upload_path = kwargs.get("upload_path") or ""
        if not filename or not stream:
            return ValueError
    except (KeyError, ValueError):
        res.update(msg="Parameter error")
    else:
        token = g.cfg.gitee_token
        repo = g.cfg.gitee_repo
        branch = g.cfg.gitee_branch
        dn = g.cfg.gitee_dn
        gitee_basedir = g.cfg.gitee_basedir or '/'
        if not token or not repo or "/" not in repo:
            res.update(msg="The gitee parameter error")
            return res
        if isinstance(upload_path, string_types):
            if upload_path.startswith("/"):
                upload_path = upload_path.lstrip('/')
            if gitee_basedir.startswith("/"):
                gitee_basedir = gitee_basedir.lstrip('/')
            saveto = join(gitee_basedir, upload_path)
            filepath = join(saveto, filename)
            #: 通过API上传图片
            data = dict(
                message="Create %s by picbed" % filepath,
                content=b64encode(stream).decode("utf-8"),
                access_token=token,
            )
            if branch:
                data["branch"] = branch
            headers = {
                "User-Agent": "picbed-up2gitee/%s" % __version__,
            }
            try:
                r = try_request(
                    "https://gitee.com/api/v5/repos/%s/contents/%s" % (
                        repo, filepath
                    ),
                    data=data,
                    headers=headers,
                    timeout=30,
                    method="post"
                )
            except requests.exceptions.RequestException as e:
                res.update(msg=e)
            else:
                result = r.json()
                if r.status_code == 201:
                    content = result["content"]
                    src = content["download_url"]
                    if dn:
                        src = slash_join(dn, filepath)
                    res.update(
                        code=0,
                        src=src,
                        basedir=gitee_basedir,
                        branch=branch,
                        size=content["size"],
                        content_sha=content["sha"],
                        download_url=content["download_url"],
                        repo=repo,
                    )
                else:
                    res.update(
                        code=r.status_code,
                        msg=result.get("message", "").replace(
                            '"', '\''
                        ).replace('\n\n', ' ').replace('\n', '').replace(
                            '\\', ''
                        ),
                    )
        else:
            res.update(msg="The upload_path type error")
    return res
Пример #6
0
def upimg_save(**kwargs):
    res = dict(code=1)
    try:
        filename = kwargs["filename"]
        stream = kwargs["stream"]
        upload_path = kwargs.get("upload_path") or ""
        if not filename or not stream:
            raise ValueError
    except (KeyError, ValueError):
        res.update(msg="Parameter error")
    else:
        token = g.cfg.github_token
        repo = g.cfg.github_repo
        branch = g.cfg.github_branch
        dn = g.cfg.github_dn
        github_basedir = g.cfg.github_basedir or "/"
        if not token or not repo or "/" not in repo:
            res.update(msg="The github parameter error")
            return res
        if isinstance(upload_path, string_types):
            if upload_path.startswith("/"):
                upload_path = upload_path.lstrip("/")
            if github_basedir.startswith("/"):
                github_basedir = github_basedir.lstrip("/")
            saveto = join(github_basedir, upload_path)
            filepath = join(saveto, filename)
            #: 通过API上传图片
            data = dict(
                message="Create %s by sapic" % filepath,
                content=b64encode(stream).decode("utf-8"),
            )
            if branch:
                data["branch"] = branch
            headers = {
                "User-Agent": "sapic-up2github/%s" % __version__,
                "Authorization": "token %s" % token,
            }
            try:
                r = try_proxy_request(
                    "https://api.github.com/repos/%s/contents/%s" % (repo, filepath),
                    data=json.dumps(data),
                    headers=headers,
                    timeout=30,
                    method="put",
                )
            except requests.exceptions.RequestException as e:
                res.update(msg=e)
            else:
                result = r.json()
                if r.status_code == 201:
                    content = result["content"]
                    src = content["download_url"]
                    if dn:
                        src = slash_join(dn, filepath)
                    elif is_true(g.cfg.github_jsdelivr):
                        src = slash_join("https://cdn.jsdelivr.net/gh/", repo, filepath)
                    res.update(
                        code=0,
                        src=src,
                        basedir=github_basedir,
                        branch=branch,
                        size=content["size"],
                        content_sha=content["sha"],
                        download_url=content["download_url"],
                        repo=repo,
                    )
                else:
                    res.update(
                        code=r.status_code,
                        msg=result.get("message", "")
                        .replace('"', "'")
                        .replace("\n\n", " ")
                        .replace("\n", "")
                        .replace("\\", ""),
                    )
        else:
            res.update(msg="The upload_path type error")
    return res