python对接七牛云上传图片,可运行

一、准备工作

注册七牛云获取:

1、Access Key(注册认证后自动生成)

2、Secret Key(注册认证后自动生成)

3、空间名称:ihome(创建空间时自己起的)

4、外链域名:qtsri9d.hn-bkt.clouddn.com(创建空间成功自动生成)

二、python对接七牛云代码

1、SDK源码

# sdk文档from qiniu import Auth, put_file#填写你的 Access Key 和 Secret Key
access_key = '6YixLhlCp-WNBBQjYHPRBiSKtKdtVhtIgv0Yo'
secret_key = 'd7fvWuxEGUA0uo_e_z0l4shcF75bSqmBfXGUP'# 构建鉴权对象
q = Auth(access_key, secret_key)# 要上传的空间
bucket_name = 'ihome'# 上传到七牛后保存的文件名
key = 'demo.png'# 生成上传 Token,可以指定过期时间等
token = q.upload_token(bucket_name, key, 3600)# 上传文件的本地路径(就是你文件存放在本地盘的什么位置)
localfile = '/home/ubuntu/Desktop/demo.png'ret, info = put_file(token, key, localfile)
print(info)
# print(info)结果显示:_ResponseInfo__response:<Response [200]>, exception:None, status_code:200, text_body:{"hash":"FjE0k8sYsNUeG0tpmZ0cS14IxAJE","key":"demo.png"}, req_id:DNYAAABiT9yZJoMW, x_log:X-Log# 拼接路径   qtsrimd9d.hn-bkt.clouddn.com这个是创建空间分配的测试域名
image_file = 'http://qtsri9d.hn-bkt.clouddn.com/' + ret.get('key')
print(image_file)   # http://qtsri9d.hn-bkt.clouddn.com/demo.png

运行结果:

.../python
.../qiniu_upload.py
_ResponseInfo__response:<Response [200]>, exception:None, status_code:200, text_body:{"hash":"FjE0k8sYsNUeG0tpmZ0cS14IxAJE","key":"demo.png"}, req_id:XgUAAADLNOs0bYMW, x_log:X-Log
http://qtsri9d.hn-bkt.clouddn.com/demo.png(此为超链接,点击可以直接访问上传到七牛云的图片)Process finished with exit code 0

控制台输出图片链接,代表上传图片到七牛云成功

2、封装成函数python代码

封装成函数,在需要存储图片的地方,调用该函数。

# -*- coding: utf-8 -*-
# flake8: noqa
import uuid
from qiniu import Auth, put_file# 需要填写你的 Access Key 和 Secret Key 步骤3详细说明
access_key = '6YixLhlCp-WNBBQjYHPRBiSKtKdtVhtIgv0Yo'
secret_key = 'd7fvWuxEGUA0uo_e_z0l4shcF75bSqmBfXGUP'# 生成上传凭证
def qiniu_token(bucked_name, key):q = Auth(access_key=access_key,secret_key=secret_key)token = q.upload_token(bucked_name, key)return tokendef upload_img(): """收集本地信息到云服务器上参考地址:https://developer.qiniu.com/kodo/sdk/1242/python"""bucked_name = 'ihome'# 指定图片名称,上传后保存的文件名file_name = '{}.png'.format(uuid.uuid4())# 指定上传空间,获取tokentoken = qiniu_token(bucked_name, file_name)file_path = '/home/ubuntu/Desktop/demo.png'ret, info = put_file(token, file_name, file_path)image_file = 'http://qtsri9d.hn-bkt.clouddn.com/' + ret.get('key')return image_file# 测试
if __name__ == '__main__':img_url = upload_img()print(img_url)  # http://qtsri9d.hn-bkt.clouddn.com/7c0d346b-fd56-4984-80ec-2998d3daf690.png

使用:直接调用upload_img()函数即可上传本地图片到七牛云

3、封装成有参函数并且调用代码

需求:数据库只存储图片的链接的key部分,即:7c0d346b-fd56-4984-80ec-2998d3daf690.png。

所以,upload_img(file_path)只需返回key值即可,不需要返回完整的七牛云链接。

并将图片的本地地址通过参数传递。

# -*- coding: utf-8 -*-
# flake8: noqa
import uuid
from qiniu import Auth, put_file# 需要填写你的 Access Key 和 Secret Key 步骤3详细说明
access_key = '6YixLhlCp-WNBBQjYHPRBiSKtKdtVhtIgv0Yo'
secret_key = 'd7fvWuxEGUA0uo_e_z0l4shcF75bSqmBfXGUP'# 生成上传凭证
def qiniu_token(bucked_name, key):q = Auth(access_key=access_key,secret_key=secret_key)token = q.upload_token(bucked_name, key)return tokendef upload_img(file_path):"""收集本地信息到云服务器上参考地址:https://developer.qiniu.com/kodo/sdk/1242/python"""bucked_name = 'ihome'# 指定图片名称,上传后保存的文件名file_name = '{}.png'.format(uuid.uuid4())# 指定上传空间,获取tokentoken = qiniu_token(bucked_name, file_name)# file_path = '/home/ubuntu/Desktop/demo.png'ret, info = put_file(token, file_name, file_path)img_key = ret.get('key')return img_key

调用

from libs.qiniuyun.qiniu_upload import upload_img
class UserCenter(View):def post(self, request):"""上传用户头像"""if request.user.is_authenticated:image_data = request.FILES.get('avatar')# 要上传文件的本地路径image_path = '/home/ubuntu/Desktop/' + image_data.nameimg_key = upload_img(image_path)  # 调用封装好的图片上传函数 upload_imgtry:user=User.objects.filter(id=request.user.id).update(avatar=img_key)# 拼接七牛云完整链接返回给前端domain_name = 'http://qtsri9d.hn-bkt.clouddn.com/'img_url = str(domain_name + img_key)# 返回更新后的数据data = {"avatar_url": img_url}return JsonResponse({'data': data,"errno": "0","errmsg": "头像上传成功",})except Exception as e:# 数据库查询错误return JsonResponse({'errno': 4001,'errmsg': "DBERR"})else:# 用户未登录return JsonResponse({'errno': 4101,'errmsg': "SESSIONERR"})

python对接七牛云上传图片代码,可运行相关推荐

  1. Python联调七牛云异步上传文件

    注:本篇文章参考文献 乾坤大挪移,如何将同步阻塞(sync)三方库包转换为异步非阻塞(async)模式?Python3.10实现.-刘悦. 首先需要拥有一个七牛云的账号 七牛云官网:七牛云 | 一站式 ...

  2. 使用七牛云上传图片时出现Network error during preQuery和运行时出现okhttp的问题

    问题描述 1.使用七牛云上传图片时出现Network error during preQuery,但网络正常 原因分析:排除网络原因,尝试网络配置方向调整 Configuration configur ...

  3. 七牛云上传图片和视频

    先说本文主要的重点: 七牛云上传图片(包括从相机获取的和从相册获取的)    七牛云上传视频       8.0手机调起相机        都会进行描述    多图片和多视频上传    获取图片后缀 ...

  4. 七牛云 上传图片到七牛云并返回图片URL

    七牛云 上传图片到七牛云并返回图片URL 鸣谢'追逐盛夏流年':https://blog.csdn.net/j1231230/article/details/80061834 在开发项目的时候,经常会 ...

  5. python怎么设置七牛云_详解Python在七牛云平台的应用(一)

    七牛云七牛云是国内领先的企业级云服务商.专注于以数据为核心的云计算业务,围绕富媒体场景推出了对象存储.融合CDN.容器云.大数据.深度学习平台等产品,并提供一站式视频云解决方案,同时打造简单,可信赖的 ...

  6. python教程七牛云_python-django框架中使用七牛云

    1:注册七牛云账号 2:进行实名认证 3:在项目中安装模块(进入虚拟环境中安装) 4:创建连接信息 4-1:在七牛云上面创建存储空间 4-2:创建连接信息 qiniu_info.py 内容如下: 5: ...

  7. Java实现七牛云上传图片、读取图片链接

    Java后端实现七牛云上传图片.读取图片链接 添加依赖 <!--七牛云sdk--><dependency><groupId>com.qiniu</groupI ...

  8. 七牛云上传图片报错处理

    {ResponseInfo:com.qiniu.http.Response@62bd765,status:400, reqId:d4kAAACMt2hWMSEW, xlog:X-Log, xvia:, ...

  9. python教程七牛云_使用Python实现数据从七牛云到阿里云的自动化迁移

    工具python3.5 顺手的IDE(轻量级推荐vscode) qiniu/qshell (本文是基于 mac 系统开发,所以使用 qshell 的 mac 版本,读者请根据自己的系统下载,也可以直接 ...

最新文章

  1. 编程语言python入门要电脑什么配置能带动-Python是万能的编程语言吗?这五大用途很重要!...
  2. 揭秘一个操作灰色关键词牟取暴利的案例
  3. c++ 输入输出流关联
  4. 数据结构 - 二叉树 - 面试中常见的二叉树算法题
  5. scrapy爬虫值Items
  6. SAP Fiori RouteMatched and getById
  7. mysql 主主互备实现
  8. 使用Schedule来实现动态的定时任务
  9. 32位寄存器用法介绍
  10. C语言编写——四则运算小游戏
  11. 小甲鱼零基础入门python课后作业及答案_小甲鱼python视频第四讲(笔记及课后习题答案)...
  12. 2022电工(初级)考试模拟100题模拟考试平台操作
  13. 软件智能:aaas系统中的数学程序与技术服务之4 序篇之 综述2 词典lexicon
  14. 带log的计算器html代码,lg计算器(log计算器在线)
  15. wx.getImageInfo(Object object)获取图片信息
  16. 我有一个梦,叫“禾下乘凉梦“!
  17. 太极图用html做的原理,用HTML画个太极图
  18. git远程仓库的创建(养成好的习惯,小马教你提交代码到远程仓库中)
  19. 正则表达式中,[\s\S]* 什么意思
  20. Jimu310 数据同步

热门文章

  1. ubuntu下idea maven项目与tomcat集成
  2. Ashampoo Movie Studio Pro V1.0.3.8 官方版
  3. 【ZYNQ Ultrascale+ MPSOC FPGA教程】第三十二章 PL读写PS端DDR数据
  4. 电脑版支付宝支付对接网站问题彻底解决方法总结
  5. 信托业谋建金融控股集团,打造全牌照金融机构
  6. MASH--超快速估计基因组距离
  7. 使用计算机计算教学设计,《用计算器计算》教学设计
  8. POJ 1376 Robot
  9. node.js 静态属性_如何使用静态站点和Node.js开发和部署第一个全栈式Web应用程序
  10. jquery图片播放浏览插件prettyPhoto