django之集成七牛云对象存储(代码片段)

jingxuan-li jingxuan-li     2022-12-23     260

关键词:

Python3 + Django2.0 集成 “七牛云” 对象存储

(SDK文档地址:http://developer.qiniu.com/kodo/api/3928/error-responses

步骤1:

  在七牛云中创建一个 “存储空间”(需要实名认证,每月免费10GB)

步骤2:

  在 “个人面板” --> “秘钥管理” 中得到:ccessKey/SecretKey

步骤3:  

  在django虚拟运行环境中安装 “qiniu” SDK:pip install qiniu

步骤4:使用

  1> 获取七牛云的 token :授权码

# 获取七牛云授权 token
def qiniu_token(request):
    # 七牛云授权秘钥(在七牛云中可以得到)
    access_key = settings.UEDITOR_QINIU_ACCESS_KEY
    secret_key = settings.UEDITOR_QINIU_SECRET_KEY
    # 存储对象名称(在七牛云中可以得到)
    bucket_name = settings.UEDITOR_QINIU_BUCKET_NAME
    # 获得七牛云授权对象 q
    q = Auth(access_key,secret_key)
    # 获得一个授权的token
    token = q.upload_token(bucket_name)
    # 将七牛云的授权 token 返回给前端
    # return restful.result(data=‘token‘:token)# 这个是我在项目中集成的通用返回方法
    return JsonResponse("data":"token":"token")

  2> js方式上传文件到七牛云:

<!--前端代码-->
<!-- 将 file 按钮放在 label 标签中,并将 file 按钮隐藏,达到想要的效果,因为 file 类型按钮样式是固定的将他放在label中,点击label标签就相当于点击了 file 文件上传按钮-->
<label class="btn btn-file btn-default"><input type="file" hidden id="upload_news_file">上传图片</label>
"""
后端代码
"""
function News()
// 上传文件至七牛云中监控上传 进度 处理方式,来自:observable.subscribe()对象
News.prototype.listenQiniuNext = function (response)
/*
* observable 中 subscribe 属性:Next(res)
* res 参数是一个带有 total 字段的 object,包含loaded、total、percent三个属性:
* loaded:已上传文件大小,单位:L字节
* total:本次上传的总量控制信息,单位字节,跟文件大小并不一致
* percent:当前上传文件的进度,范围:0 - 100
*
* **** 要先得到字段 total :result.total ****
* */

var total = response.total;
// toFixed(index):保留index为小数
var percent = total.percent.toFixed(0) + "%";
  console.log("文件上传进度:" + percent
);
;
// 上传文件至七牛云中监控上传 出错 处理方式,来自:observable.subscribe()对象
News.prototype.listenQiniuError = function (error)
/*
* objservable 中 subscribe 的属性:error(err)
* 参数 err 为一个包含 code、message、isRequestError 三个属性的 object 对象:
* code:错误码
* message:错误信息,包含错误吗
* reqld:xhr请求错误的 X-Reqid
* */
console.log("文件上传出现错误,错误信息:" + error.message);
;
// 上传文件至七牛云中监控上传 完成 处理方式,来自:observable.subscribe()对象
News.prototype.listenQiniuComplete = function (response)
/* 接收上传完成后的后端返回信息,res 参数为一个 object,
* 为上传成功后后端返回的信息,具体返回结构取决于后端sdk的配置,
* 可参考上传策略。
* */
// hash: "FuAB5QBnVM_CWrw7WGc7jm7LAdyO", key: "1534507254079png" 默认返回hash与key两个参数
console.log(response);
;
// 将文件上传到七牛云服务器
News.prototype.listenUpload_news_file_qiniu_Event = function () 
    var self = this;
    var uploadBtn = $(#upload_news_file);
    // 定义一个变量保存文件上传的状态
    var uploading = false;

    // change事件:在选择文件后出发
    uploadBtn.change(function () 
        var file = this.files[0];
// get请求,可以使用ajax get 请求 $.get(
       // 这里是服务端处理的视图函数地址
url: /cms/qiniu_token/, success: function (result) if (result[code] === 200) // 得到服务端返回的 token 验证信息 var token = result[data][token]; var houzhui = file.name.split(.); // 使用当前时间戳作为文件的key var key = new Date().getTime() + "." + houzhui[houzhui.length - 1]; var config = // 是否使用cdn加速 useCdnDomain: true, // 服务器地址:华东,华南...... region: qiniu.region.z0, // 如果产生错误,重新上传次数 retryCount: 6 ; var putExtra = // 上传文件的名称 fnName: key, // 文件上传时使用的一些参数 params: , // 限制文件上传的类型 mimeType: ["image/png", "image/jepg", "image/gif"] ; var observable = qiniu.upload(file, key, token, putExtra, config); /* subscribe对象有三个属性:next,error,complete * */ observable.subscribe( /** 如果使用 self.listenQiniuNext() 会报错 ** 必须使用 self.listenQiniuNext,因为作为一个参数传递 ** 绑定方法后,会改变方法的所属对象,比如绑定后方法不再属于 News,所以无法使用 News 中定义的属性 * **/ // 文件上传进度监控 next: self.listenQiniuNext, // 文件上传产生错误时触发 error: self.listenQiniuError, // 当文件上传完成时触发 complete: self.listenQiniuComplete ); ); ); ; News.prototype.run = function () // 将文件上传到千牛服务器 this.listenUpload_news_file_qiniu_Event(); ; $(function () var news = new News(); news.run(); );

  3> python上传图片到七牛云(在博客 ”django之百度Ueditor富文本编辑器后台集成” 笔记中的文件上传后台处理中有应用):

# 参数:
# upfile: 文件(前端传过来的文件)
# filename: 文件名
  def _upload_to_qiniu(self, upfile, filename):
        """
        上传文件到七牛
        """
        if not sys.modules.get(‘qiniu‘):
            raise RuntimeError(‘没有导入qiniu模块!‘)
     # 配置自己的 access_key,secret_key q = qiniu.Auth(<UEDITOR_QINIU_ACCESS_KEY>, <UEDITOR_QINIU_SECRET_KEY>)
     # 配置自己的: 空间名称 token = q.upload_token(<UEDITOR_QINIU_BUCKET_NAME>) buffer = BytesIO() for chunk in upfile.chunks(): buffer.write(chunk) buffer.seek(0) ret, info = qiniu.put_data(token, filename, buffer.read()) if info.ok:
       # 配置自己的域名:DOMAIN:http://七牛云的域名/ url = parse.urljoin(UEDITOR_QINIU_DOMAIN, ret[‘key‘]) return ‘SUCCESS‘, url, ret[‘key‘], ret[‘key‘] else: return ‘FAIL‘, None, None, None

 










































django和七牛云交互(代码片段)

django和七牛云交互七牛开发文档安装pipinstallqiniu初始化#access_key个人中心的ak#secret_key个人中心的skfromqiniuimportAuthq=Auth(access_key,secret_key)上传流程fromqiniuimportAuth,put_file,etagimportqiniu.config#需要填写你的AccessKey和SecretKeyaccess_key='Acces... 查看详情

java实现七牛云文件或图片上传下载(代码片段)

文章目录一、准备工作1.1.为什么选择七牛云?1.2.七牛云注册二、java操作七牛云对象存储下载2.1.pom.xml引入依赖2.2.上传下载具体代码三、具体业务例子(七牛云做图片服务器--SpringBoot)3.1.pom.xml(此处继承上面的依赖多引入一个)3.2.创... 查看详情

七牛云--对象存储

七牛云--对象存储(此SDK适用于Java7及以上版本)使用maven创建工程:pom.xml配置文件<!--java7及以上版本,qiniu-java-sdk的版本[7.2.0,7.2.99]--><dependency><groupId>com.qiniu</groupId><artifactId>qiniu-java-sdk< 查看详情

flask-web——对象存储——图片上传存储传输等(代码片段)

1.七牛云存储需求在项目中,如用户头像、文章图片等数据需要使用文件存储系统来保存方案自己搭建文件系统服务选用第三方对象存储服务我们在项目中使用七牛云对象存储服务http://www.qiniu.com。2.使用注册新建存储空间使... 查看详情

如何用建木ci往七牛云上传文件(代码片段)

#gitee仓库路径#七牛云空间管理中创建的空间名字#七牛云密钥管理中的AK#七牛云密钥管理中的SK#存储区域,不设置时,自动识别,华东:z0;华北:z1;华南:z2;北美:na0;东南亚:as0#上传后在七牛云生成的uri#要上传的文件目... 查看详情

在django中使用七牛云(代码片段)

一、配置环境django3.0.3 qiniu7.2.6全部可以使用pip安装二、在app的目录下创建qiniu_config.py文件,用于存放七牛云的相关配置信息qiniu_config=‘access_key‘:‘‘,‘secret_key‘:‘‘,‘bucket_name‘:‘‘,‘domine‘:‘‘,#bucket_name:空间名#d... 查看详情

七牛云对象存储java使用

...avaSDK简介使用SDK上传文件下载文件测试对象存储服务简介七牛云海量存储系统(KODO)是自主研发的非结构化数据存储管理平台,支持中心和边缘存储。平台经过多年大规模用户验证已跻身先进技术行列,并广泛应... 查看详情

七牛云的使用(代码片段)

当七牛云存储区域地域简称不对就会抛以下异常ResponseInfo:com.qiniu.http.Response@46238e3f,status:400,reqId:5cYAAAADmTAShB8W,xlog:X-Log,xvia:,adress:up-z1.qiniu.com/222.222.95.22:80,duration:0.000000s,error:incorrectregion, 查看详情

七牛云免费对象存储,并绑定到cloudreve中

...站的图库,这样对网站的访问效率也会提高。今天了解到七牛云有免费的对象存储可以使用,于是自己就是注册了账号,而且需要实名,一切完成后,就可以开通对象存储功能了下面是对象存储的免费额度,存储空间是10G,月流... 查看详情

七牛云测试域名到期博客图片问题(代码片段)

从上周末开始到今天,终于把七牛云到期的测试域名所属空间的博客照片迁移到腾讯云。腾讯云有一定量免费空间供用户使用(发博文时免费额度:50GB标准存储容量,10GBCDN回源流量,100万次读请求,100万次写请求。费用实例)... 查看详情

ueditor上传图片到七牛云存储(formapi,java)

...首先从表单开始生成token建立图片空间生成token上传流程集成ueditor将ueditor中的图片模块的在线管理功能和七牛结合ueditor上传图片到七牛 查看详情

golang七牛云上传示例(代码片段)

查看详情

python实战项目-10文件存储/支付宝支付/支付成功回调接口(代码片段)

...的服务器 -第三方: -阿里云:对象存储oss-腾讯对象存储-七牛云存储 -自己搭建: fastdfs:文件对象存储https://zhuanlan.zhihu.com/p/372286804minio:我们可以使用对应的sdk包将文件传输上去在此项目中我们选用七牛云来存储视频文件资源... 查看详情

javawebservletjsp使用七牛云api上传图片(代码片段)

文章目录JavaWebservletjsp使用七牛云API上传图片工具类七牛云工具类JDBC工具类servicePhotoServicePhotoServiceImplDaoPhotoDaoPhotoDaoImplvoMyPutRetPhotoResultwebappweb.xmldata.jspdetail.jspindex.jsplist.jsptransfer.jspservletJDBCs 查看详情

七牛云宣布华南机房存储空间降价,降幅达10%

尊敬的用户,您好!感谢您长期以来对七牛云的关注与厚爱。自成立以来,我们一直致力于为用户提供“简单可信赖”的云服务。七牛云以存储起家,在存储方面先人一步,不断推陈出新。随着我们自主研发的海量存储系统不断... 查看详情

go实战|电商平台图片上传到七牛云(代码片段)

...nfig3.upload完整代码这一章节中我们介绍如何把图片上传到七牛云,并且返回对应图片的url。因为后续我们的创建的商品,更换头像等等都是把我们的图片上传七牛云存储,再返回对应的url的。1.获取配置信息打开七牛... 查看详情

七牛云图床开启https域名的两种方式(代码片段)

...s://hijerry.cn/p/64756.htmlhttps下的http图片因为自己一直用的是七牛云来管理博客图片,发现在chrome下用https访问博客时看不到博客里的图片,而使用safari访问https博客却可以正常看到图片。chrome报错如下:打开chrome开发者... 查看详情

七牛云文件上传助手(代码片段)

qiniuyun_upload_tools最近写博客发现经常要上传图片到七牛云上去,每次打开网页登录然后上传感觉很慢,windows也没有一个好的上传工具,于是写了这样的一个工具。效果使用方法下载程序包点击下载解压后直接在config.json文件里面... 查看详情