Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >图床,通过Python调用api上传图片到Gitlab

图床,通过Python调用api上传图片到Gitlab

作者头像
SingYi
发布于 2023-08-23 00:09:01
发布于 2023-08-23 00:09:01
58800
代码可运行
举报
文章被收录于专栏:Lan小站Lan小站
运行总次数:0
代码可运行

用过一段时间的PicGo,但是感觉太重了,为了一个上传图片去装一个软件有点太麻烦。 然后目前个人感觉也就Gitlab速度还可以一点,于是昨天翻了官方文档踩了很多坑,总算搞好了。 现将关键代码放到这里。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
    file_path = datetime.datetime.now().strftime('zb_users/upload/%Y/%m/')
    headers = {'PRIVATE-TOKEN': '这里放你的项目token'}
    img = file.file.read()
    ext = file.content_type.split('/')[-1]
    file_path = urllib.parse.quote(file_path + uuid.uuid4().hex + '.' + ext).replace('/', '%2f')
    url = f'https://gitlab.com/api/v4/projects/这里放你的项目ID/repository/files/{file_path}'
    response = await requests.post(url, headers=headers, json={
        'branch': 'master',
        'content': base64.b64encode(img).decode('utf-8'),
        'author_email': [email protected]/* <![CDATA[ */!function(t,e,r,n,c,a,p,m,o){try{t=document.currentScript||function(){for(t=document.getElementsByTagName('script'),e=t.length;e--;)if(t[e].getAttribute('data-yjshash'))return t[e]}();if(t&&(c=t.previousSibling)){p=t.parentNode;if(a=c.getAttribute('data-yjsemail')){for(e='',o=0,r='0x'+a.substr(0,2)|0,n=2;a.length-n;n+=2){m=('0'+('0x'+a.substr(n,2)^r).toString(16)).slice(-2);if((a.length-n)<=6&&a.length>=128)o=(parseInt(m)<=191)?1:o*2;if(o>1)break;e+='%'+m;}p.replaceChild(document.createTextNode(decodeURIComponent(e)),c)}p.removeChild(t)}}catch(u){}}()/* ]]> */',
        'author_name': 'Lan',
        'encoding': 'base64',
        'commit_message': 'www.lanol.cn'
    })
    res = await response.json()

然后花了点时间写了个小前端用来上传,支持选择,拖拽,粘贴文件进行上传。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022年11月07日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
用Jeelyfin搭建属于自己的家庭影音(全网最良心、最全)
更多的各位自己去探索吧,目前这个搭建起来难度不大,也没有涉及数据库什么的,一个docker环境就能跑,设置上相对也简单。
爱技术的小黄鸭
2023/08/26
6K0
用Jeelyfin搭建属于自己的家庭影音(全网最良心、最全)
Shell脚本入门需要注意的几个问题
我喜欢Shell,所以喜欢Linux。在Linux世界里,你可以做到最大化的按自己的心去折腾,最大化的解放双手,同时享受敲击键盘的乐趣……
爱技术的小黄鸭
2023/06/15
2290
Shell脚本入门需要注意的几个问题
Centos的替代者--RockyLinux之初体验
Centos 曾经处于RHEL下游,所以成为了众多公司的首选之一。可后来它变了,它变成“Centos Stream”,别看只是多了一个“Stream”,但它却由原来的RHEL下游变成了RHEL上游。
爱技术的小黄鸭
2023/06/15
4K0
Centos的替代者--RockyLinux之初体验
浅谈部署 Zabbix 踩坑记
Zabbix 是一个基于WEB界面的提供分布式系统监视以及网络监视功能的企业级的开源解决方案。 Zabbix 能监视各种网络参数,保证服务器系统的安全运营;并提供灵活的通知机制以让系统管理员快速定位/解决存在的各种问题。 Zabbix 由2部分构成,zabbix server与可选组件zabbix agent。 Zabbix server 可以通过SNMP,zabbix agent,ping,端口监视等方法提供对远程服务器/网络状态的监视,数据收集等功能,它可以运行在Linux,Solaris,HP-UX,AIX,Free BSD,Open BSD,OS X等平台上。
爱技术的小黄鸭
2023/06/15
3880
浅谈部署 Zabbix 踩坑记
npm运行项目报错:No ESLint configuration found 的解决方法
今天接受了一个 Vue 项目,在执行  npm run serve 命令运行项目时报错:
德顺
2021/04/19
17.5K0
npm运行项目报错:No ESLint configuration found 的解决方法
怎样利用 E-mail 对网站进行备份
所谓备份,就是将数据及时 copy 到其它地方进行存储,正所谓“鸡蛋不要放在一个篮子里”,数据存储也一样。
爱技术的小黄鸭
2023/06/15
3460
SQL 常用语法笔记
SQL语言,是结构化查询语言(Structured Query Language)的简称。SQL语言是一种数据库查询和程序设计语言,用于存取数据以及查询、更新和管理关系数据库系统;同时也是数据库脚本文件的扩展名。详见 360百科
爱技术的小黄鸭
2023/06/15
2060
开源:匿名口令分享文本,文件-口令文件箱-文件快递柜
文件快递柜-轻量 FileCoxBox-Lite 匿名口令分享文本,文件,像拿快递一样取文件 视频介绍 https://www.bilibili.com/video/BV1fD4y187Yk?t=15
SingYi
2023/08/23
4550
开源:匿名口令分享文本,文件-口令文件箱-文件快递柜
一次Linux下尝试 VSFTP 经历
VSFTP是一个基于GPL发布的类Unix系统上使用的FTP服务器软件,它的全称是Very Secure FTP 从此名称可以看出来,编制者的初衷是代码的安全。
爱技术的小黄鸭
2023/06/15
3710
Linux搭建基于CloudFlare的动态DDNS解析
hkt小鸡换动态ip了 记录下用cf来ddns 方便自用 首先必须要有自己的域名且域名已经接入 Cloudflare (即DNS为CF提供的地址)
西方记者
2022/02/25
3.3K0
rinetd转发+bbr 方便国内nat小鸡食用
bbr:此bbr改自94ish大佬 git被Q 换了fastgit的https反代 其余不变
西方记者
2022/02/25
6590
Linux 的随机那些事儿
随机,故名思议就是不按套路出牌的一种机制,确切的说不用人工特意的参与而得到的一种结果。生活中、工作中都需要人为随机事件。 因为这样可以节省很多脑细胞,同时也能制造许多意外。比如写程序就经常需要随机事件的参与,因为像我这么不专业的“程序猿”都经常需要随机事件,更何况专业的“攻城狮”对吧?
爱技术的小黄鸭
2023/06/15
3860
uView UI框架Vue CLI空白项目运行报错:this.getOptions is not a function的解决方法
看了一下 uView 文档,使用 Vue CLI 创建了一个 uni-app 项目,因为 uView 有针对 Vue CLI 的空白项目包。
德顺
2021/04/25
3K1
小站修复记
前段时间,一直收到腾讯云安全事件邮件,主要涉及到 SSH、openssl、sudo 几个高危漏洞;openSSH 相对来讲是比较好处理的,但是 OpenSSL却比较棘手,因为涉及的依赖比较多……
爱技术的小黄鸭
2023/06/15
2630
封装一个图片文件对象转Base64的方法
常用的 UI 组件库如 Ant Design 、 Element UI 等都会有的 Upload 组件,支持 change 等事件,但是事件返回的是文件对象,如果需要本地实时预览,就需要转换成 Base64 格式。
德顺
2021/05/31
1.4K0
Php/WebStorm配置创建文件时自动生成文件注释
自动创建文件注释,可以在团队开发中起到非常重要的作用,团队成员可以通过注释清晰的知道文件的创建时间作者等信息,方便后期维护和迭代。
德顺
2020/12/22
2.1K0
Php/WebStorm配置创建文件时自动生成文件注释
给你的网站做个访问信息弹窗
如果您也想给您的网站做这样的效果,首先你需要解决的是IP定位问题。 目前提供这样的接口有百度地图、高德地图,以及博主维护的 IT小圈IP接口。不管是百度地图还是高德地图,目前个人开发者都不支持IPv6查询,但IT小圈IP接口目前是支持的。如果想自己体验开发过程,可以尝试去申请百度或者高德的key,然后进行调用。当然也欢迎测试使用IT小圈接口。
爱技术的小黄鸭
2023/06/15
3810
给你的网站做个访问信息弹窗
我整理了这43个VS Code插件,Bug输出更快了
工作之余,我整理了这 40 多个 VS Code 插件,其中有一部分已经内置了,但不知道他们是用来干啥的。
德顺
2021/08/06
4.9K0
使用Folderclone来执行谷歌google共享云端硬盘转存相互转移拷贝复制文件
> 首先我们需要能全局系统(特别是powershell)能够正常访问谷歌服务项目的机子 如阿里云的港美日win服务器等,本地使用游戏加速器类全局可能会无法执行后面的操作
西方记者
2022/02/25
2.7K0
使用Folderclone来执行谷歌google共享云端硬盘转存相互转移拷贝复制文件
从MySQL注入到XPath注入
这里直接引用w3school的XPath教程中的案例,因为里面给了好多示例,基本一看就懂的那种。
Y1ng
2022/10/31
3.7K0
从MySQL注入到XPath注入
相关推荐
用Jeelyfin搭建属于自己的家庭影音(全网最良心、最全)
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验