Python 从剪贴板上传图片到阿里云Oss

Python 从剪贴板上传图片到阿里云Oss

图床功能

阿里云创建用户

首先创建阿里云用户 点击控制台,开通对象存储Oss功能 新建Bucket存储 点击头像,点击accesskeys创建密钥【建议使用子密钥】

环境配置

安装Python版本 #安装Python SDK pip install oss2 #安装PIL pip install pillow #安装pyperclip pip install pyperclip

代码编写

#!/usr/bin/env python
# coding=utf-8
import oss2
import uuid
import pyperclip
import sys
import time
import os
from PIL import Image
from PIL import ImageGrab

#OSS信息
AccessKeyID = "YourAccessKetID"
AccessKeySecret = "YourAccessKeySecret"
EndPoint = "YourEndPoint"
BucketName = "YourBucketName"
#存储路径
Path = "File_Path"

#确定是否为图片
def is_img(ext):
    ext = ext.lower()
    if ext in [.jpg, .png, .jpeg, .bmp, .gif]:
        return True
    else:
        return False

#查找剪贴板中是否有图片
def has_im():
    if len(sys.argv) == 1:
        im = ImageGrab.grabclipboard()
        if isinstance(im, Image.Image):
            src_file = Path + "Oss.jpg"
            im.save(src_file)
            return src_file
        else:
            print "剪贴板中无图片"
            sys.exit()
    elif len(sys.argv) == 2:
        if not os.path.exists(sys.argv[1]):
            print "文件不存在"
            sys.exit()
        else:
            if not is_img(os.path.splitext(sys.argv[1])[1]):
                print "%s" % os.path.splitext(sys.argv[1])[1]
                sys.exit()
            else:
                src_file = sys.argv[1]
    else:
        print "Error in args"
        sys.exit()

#上传的文件独立名
def oss_file_name(local_name):
    name = uuid.uuid4().__str__().replace("-", "").upper()
    Date = time.strftime(%Y-%m-%d, time.localtime(time.time()))
    local_name = str(local_name).rsplit(".")
    return "%s/%s.%s" % (Date, name, local_name[-1])

#Oss上传
def Oss(img_name, img_path):
    auth = oss2.Auth(AccessKeyID, AccessKeySecret)
    bucket = oss2.Bucket(auth, EndPoint, BucketName)
    bucket.put_object_from_file(img_name, img_path)

#将URL复制到剪贴板
def Url_Clip(name):
    result_str = "![](http://%s.%s/%s)" % (BucketName, EndPoint, name)
    pyperclip.copy(result_str)

if __name__=="__main__":
    img_path = has_im()
    img_name = oss_file_name(img_path)
    Oss(img_name, img_path)
    Url_Clip(img_name)
经验分享 程序员 微信小程序 职场和发展