在django中使用七牛云

一、配置环境

django 3.0.3

qiniu 7.2.6

全部可以使用pip安装

二、在app的目录下创建qiniu_config.py文件,用于存放七牛云的相关配置信息

qiniu_config = {
    ‘access_key‘: ‘‘,
    ‘secret_key‘: ‘‘,
    ‘bucket_name‘: ‘‘,
    ‘domine‘: ‘‘,
}
#bucket_name:空间名
#domine:cdn加速域名

三、views.py

from django.shortcuts import render, HttpResponse
import qiniu
import json
from qiniu_app.qiniu_config import qiniu_config

# 七牛身份验证
def qiniu_auth():
    access_key = qiniu_config[‘access_key‘]
    secret_key = qiniu_config[‘secret_key‘]
    q = qiniu.Auth(access_key, secret_key)
    return q

# Create your views here.
# 将上传处理后的图片刷新到cdn节点,减少回源流量
def cdn_flush(key):
    auth = qiniu_auth()
    cdn_manager = qiniu.CdnManager(auth)
    domine = qiniu_config[‘domine‘]
    need_flush_url = domine + key
    # 需要刷新的文件链接
    urls = [
        need_flush_url,
    ]
    # URL刷新链接
    refresh_url_result = cdn_manager.refresh_urls(urls)
    return

# 进行上传的图片处理
def dealwith_img(request):
    q = qiniu_auth()
    key = request.GET.get(‘key‘)
    bucket_name = qiniu_config[‘bucket_name‘]
    # pipeline是使用的队列名称,不设置代表不使用私有队列,使用公有队列。
    # pipeline = ‘your_pipeline‘
    # 要进行的转换格式操作。
    fops = ‘imageView2/0/format/webp/interlace/1‘
    # 可以对缩略后的文件进行使用saveas参数自定义命名,当然也可以不指定文件会默认命名并保存在当前空间
    saveas_key = qiniu.urlsafe_base64_encode(bucket_name + ‘:‘ + key)
    fops = fops + ‘|saveas/‘ + saveas_key
    # pfop = qiniu.PersistentFop(q, bucket_name, pipeline)
    pfop = qiniu.PersistentFop(q, bucket_name)
    ops = []
    ops.append(fops)
    ret, info = pfop.execute(key, ops, 1)
    assert ret[‘persistentId‘] is not None
    cdn_flush(key)
    return HttpResponse(json.dumps(‘ok‘))

# 获取七牛上传的token
def qntoken(request):
    q = qiniu_auth()
    key = request.GET.get(‘key‘)
    bucket = qiniu_config[‘bucket_name‘]
    token = q.upload_token(bucket, key)
    return HttpResponse(json.dumps({‘token‘: token}))

def qiniu_test(request):
    return render(request, ‘qiniu_test.html‘)

四、urls.py

from django.urls import path
from qiniu_app import views
urlpatterns = [
    path(‘qntoken/‘, views.qntoken, name="qntoken"),
    path(‘‘, views.qiniu_test, name="qiniu_test"),
    path(‘dealwith_img/‘, views.dealwith_img, name="dealwith_img"),
]

五、html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <script src="https://cdn.bootcss.com/jquery/3.4.1/jquery.min.js"></script>
    <script src="https://unpkg.com/[email protected]/dist/qiniu.min.js"></script>
</head>
<body>

<from>
    <input type="file" id="img" value="上传图片">
</from>
上传后的url:<span id="img_url"></span>

<script>// 上传完图片后做的事情
    function com_img(ret) {
        var img_name = ret[‘key‘];
        var domine = ‘‘; // cdn加速域名
        var img_url = domine + img_name; //合成访问的链接
        $(‘span#img_url‘).text(img_url);
        // 在后端处理上传的图片
        $.ajax({
            url: ‘{% url ‘dealwith_img‘ %}‘,
            type: ‘GET‘,
            data: {‘key‘: img_name},
            dataType: ‘json‘,
            error: function () {
                alert("处理失败")
            }
        })
    }

    $(‘#img‘).change(function () {
            var token = ‘‘;
            var file_img = $(‘#img‘).get(0).files[0];
            var key = (new Date()).getTime() + ‘.‘ + file_img.name.split(‘.‘)[1];
            $.ajax({
                url: ‘{% url ‘qntoken‘ %}‘,
                type: ‘GET‘,
                data: {‘key‘: key},
                dataType: ‘json‘,
                success: function (token_msg) {
                    token = token_msg[‘token‘];
                    console.log(token);
                    var putExtra = {
                        fname: key,
                        params: {},
                        mimeType: [‘image/png‘, ‘image/jpeg‘]
                    };
                    var config = {
                        useCdnDomain: true,
                        retryCount: 6,
                        region: qiniu.region.z0
                    };
                    var observable = qiniu.upload(file_img, key, token, putExtra, config)
                    var subscription = observable.subscribe({‘error‘: up_err, ‘complete‘: com_img}) // 上传开始
                }
            });
        }
    );

</script>
</body>
</html>

原文地址:https://www.cnblogs.com/xshan/p/12274249.html

时间: 2024-08-27 16:08:28

在django中使用七牛云的相关文章

django之集成七牛云对象存储

Python3 + Django2.0 集成 "七牛云" 对象存储 (SDK文档地址:http://developer.qiniu.com/kodo/api/3928/error-responses) 步骤1: 在七牛云中创建一个 "存储空间"(需要实名认证,每月免费10GB) 步骤2: 在 "个人面板" --> "秘钥管理" 中得到:ccessKey/SecretKey 步骤3: 在django虚拟运行环境中安装 &q

Android开发中使用七牛云存储进行图片上传下载

Android开发中的图片存储本来就是比较耗时耗地的事情,而使用第三方的七牛云,便可以很好的解决这些后顾之忧,最近我也是在学习七牛的SDK,将使用过程在这记录下来,方便以后使用. 先说一下七牛云的存储原理,上面这幅图片是官方给出的原理图,表述当然比较清晰了.可以看出,要进行图片上传的话可以分为五大步: 1. 客户端用户登录到APP的账号系统里面: 2. 客户端上传文件之前,需要向业务服务器申请七牛的上传凭证,这个凭证由业务服务器使用七牛提供的服务端SDK生成: 3. 客户端使用七牛提供的客户端S

如何在WordPress中使用七牛云存储

序:七牛云存储可以方便的将网站的图片等数据镜像到七牛云存储的空间,直接从云端将数据返回给用户.这样可以大大节省网站的空间,提升网站的访问速度. 真正显示一键实现WordPress博客静态文件CDN加速.下面主要介绍一下WordPress中七牛云存储插件的使用. 一.申请七牛云存储的账号 首先需要申请七牛云存储的账号,申请好后,点击创建空间,选择空间类型为公开空间,提交 二.配置空间 配置空间,点击一键加速网站. 镜像源填写自己网站域名.确认加速. 这里的robots.txt配置文件内容为: #

thinkphp 中 使用七牛云上传

利用七牛云私有空间存储文件 第一步,注册七牛云,创建空间,将空间设为私有 需要记下的东西: AK,SK,bucket 第二步配置ThinkPHP 在config.php添加 'UPLOAD_SITEIMG_QINIU'=>array( 'maxSize'=>5*1024*1024,//文件大小 'rootPath'=>'./', 'saveName'=>array('uniqid',''), 'driver'=>'Qiniu', 'driverConfig'=>arra

dedecms织梦七牛云存储二次开发

DeDeCMS(织梦)整合七牛云储存的优势1.节省自身服务器带宽.流量.储存空间,因为使用七牛云前端JS SDK上传到七牛云.2.提高网站加载速度,因为大部分的流量由七牛云分发,减少了自身服务器带宽的占用,七牛云的CDN比普通的自建服务器还是要快的.3.不破坏系统兼容性,可以后台配置储存位置,如果哪天想用回自己服务器储存图片,只需要修改一个网站后台选项即可.DeDeCMS(织梦)整合七牛云储存思路在编辑文章前,通过网站后台设置图片储存位置(七牛云或者自己服务器),然后获取对应的图片地址.对DeD

BAE Flask UEditor 使用七牛云

1. 配置BAE支持七牛云的SDK BAE的python requirements当然不支持竞争对手了. 解决方法: 把qiniu这个文件包直接放置在你项目的目录中(与其他app同级) 运行会发现缺少requests,这个BAE中支持,填到requirements中就可以了 2. Flask使用Ueditor 参考: http://segmentfault.com/a/1190000002429055 已经配置好,有疑问请回复 3. 上传文件到七牛云 七牛python sdk API有 put_

上手七牛云存储

早就听说过七牛云存储,终于有时间上手实践. 1.第一步,注册七牛账号,由于是测试,首先申请的是个人账号 2.注册成功之后,默认是体验账号,每月只有1G的空间容量及1G的下载流量 3.账号认证,认证成功之后将升级为标准账号,每月有10G的空间容量及20G的下载流量 虽然认证麻烦了些,但看得出来,七牛还是很良心的,这种免费套餐对于一般的小型网站应用来说应该是足够了 说明一下,认证表单里,有一个“个人网址”的文本框,一开始我以为是空间的自定义域名,后来试了一下,应该就是个人网站地址,可以随便填,不影响

七牛云李朝光:深度学习平台助力亿级别内容审核系统

2018 年 10 月 18 日-20 日,由极客邦科技与 InfoQ 中国主办的 QCon 全球软件开发大会在上海宝华万豪酒店举行.? 在人工智能与深度学习实践专场(解决方案专场)中,七牛云深度学习平台研发负责人李朝光受邀出席,并带来了主题为<七牛深度学习平台支持亿级审核系统>的精彩演讲,详细讲解了内容审核方面用户所遇到的问题以及最优的解决方案.七牛云内容审核系统的强大优势等内容,为到场嘉宾带来了满满的技术干货.??七牛云深度学习平台研发负责人李朝光?当下,网络视频与直播用户已分别超过 5

八年深耕,七牛云为企业提供一站式专业视频云服务

近日,国务院发展研究中心国际技术经济研究所在<中国智能化转型与技术创新高层研讨会>中预测,2023 年中国云计算产业规模将超过 3000 亿人民币.其中,中国政府和企业上云率将超过 60%,全站自主可控计算平台将成为政府和大型企业的主流 IT 基础设施. 而在众多企业上云的需求中,视频云服务正酝酿着一个不可估量的市场.比如短视频.在线教育.在线办公等应用的爆发,就在短时间内创造了海量对视频云服务的需求,并逐步常态化.同时,随着 5G 时代的到来,视频的流量占比还将进一步提升,未来在整个互联网产