配置图床,感觉已是学习记录时必备的一项技能。旨在将图片保存在云端服务器,方便查看。
因笔者使用的七牛图床测试域名已被收回,改用网易云图床(免费),并以此文章作为记录
网易云图床申请网易云登录注册
赠送对象存储50G的存储空间、20G的月流量、100万次get请求、10万次put请求!具体详情页
注册成功后进入对象存储、创建桶(桶为对象存储的容器)。创建好后即可拥有自己的图床,步骤如图所示:
手动管理图片对象(略)
自动管理上传图片上传图片需要使用到自己的秘钥,因此首先要找到个人秘钥
位置如下图所示
构建请求上传图片(文档)
利用SDK上传图片(文档)
图片上传(python SDK)
import nos access_key = "*********" secret_key = "*********" end_point = "****" # 区域名 bucket = "****" # 桶名,存放对象容器 def uploadImg(): client = nos.Client( access_key, secret_key, end_point=end_point, num_pools=10, # 允许打开的最大 HTTP 连接数 timeout=5, # 建立连接的超时时间(单位:秒) max_retries=4, # 请求失败后最大的重试次数 enable_ssl=True # 后续与 NOS 服务器进行数据传输、交互时,是否使用 HTTPS ) return client client = uploadImg() file_name = "****" # 上传后的文件名称 filePath = "****" # 所需上传的文件路径 client.put_object(bucket, file_name, open(filePath, "rb"))图片统一上传
思路: 固定文件夹存放图片,每次上传时遍历文件夹内图片,逐一上传
网易云上传文件名称相同时会进行覆盖操作,可将上传过的文件名保存于本地,遍历图片上传时通过比对判断是否上传
# 关于本地存储方案又很多的选择,笔者此处选用mysql try: #获取一个数据库连接,注意如果是UTF-8类型的,需要制定数据库 conn = pymysql.connect(host='localhost',user='root',passwd='123456',db='数据库名',port=3306,charset='utf8') cur = conn.cursor() #获取一个游标 cur.execute('select imgName from yunImgs') datas = cur.fetchall() data = [] for values in datas: data.append(values[0]) client = uploadImg() imgsDir = sys.path[0] + "/imgs" fileNames = os.listdir(imgsDir) upCount = 0 for file_name in fileNames: if file_name == ".DS_Store" or file_name in data: continue try: filePath = imgsDir + "http://www.likecs.com/" + file_name sql = "insert into yunImgs(imgName) values('" + file_name + "')" cur.execute(sql) conn.commit() client.put_object(bucket, file_name, open(filePath, "rb")) print(file_name,"上传完成") upCount += 1 except Exception as e: print(file_name + "上传出错: " + e) conn.rollback() cur.close() #关闭游标 conn.close() #释放数据库资源 print("图片上传完毕:新上传", str(upCount), "张图片") except Exception as e : print("上传出错: " + e)一键上传图片
利用上述代码生成python脚本,上传时只需执行此文件即可。
为方便执行脚本,笔者提出3种较为简单的执行思路
终端 使用alias取别名
使用Alfred设置工作流程
自定义command文件执行脚本
如有不正确之处望之处,谢谢