python使用七牛云存储-button

七牛云存储-用前端button上传到七牛

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

引入七牛的步足
  1. 安装python的sdk

    pip install qiniu
    
  2. 后端代码

    @app.route("/uptoken/")
    def uptoken():
        access_key = '你的AccessKey'
        secret_key = '你的SecretKey'
    
        # 创建qiniu对象
        q = qiniu.Auth(access_key, secret_key)
    
        # 储存空间的名称
        bucket = 'zlbbs'
    
        # 获取token 参数存储空间的名字
        token = q.upload_token(bucket)
        return jsonify({'uptoken': token})
    
  3. 在前端添加js的sdk: 七牛为JavaScript提供了一个专门用来上传文件的接口.把一下文件音带html代码中:

    <script src="https://cdn.staticfile.org/Plupload/2.1.1/moxie.js"></script>
    <script src="https://cdn.staticfile.org/Plupload/2.1.1/plupload.dev.js"></script>
    <script src="https://cdn.staticfile.org/qiniu-js-sdk/1.0.14-beta/qiniu.js"></script>
    
  4. 在前端添加zlqiniu.js文件: 这个文件是封装了七牛的初始化和配置相关的. 使用这个文件可以写更少的代码来使用七牛

    <script src="{{ url_for('static',filename='zlqiniu.js') }}"></script>
    
  5. 初始化七牛: 使用一下代码初始化七牛, 配置一些参数信息:

    window.onload = function () {
        zlqiniu.setUp({
          'browse_btn': 'upload-btn',
          'uptoken_url': '/uptoken/',
          'success': function (up,file,info) {
            var url = file.name;
            console.log(url);
          }
        });
    }
    

    解释以上代码:

    • browse_btn: 这个是用来绑定按钮的id的. 以后点击这个按钮就可以上传文件.

    • uptoken_url: 这个是后台写好的获取uptoken的接口

    • success: 这个是文件上传成功后执行的回调.\

实践
  • 后端代码

    from flask import Flask, jsonify, render_template
    import qiniu
    
    app = Flask(__name__)
    
    
    @app.route("/")
    def index():
        return render_template("index.html")
    
    
    @app.route("/uptoken/")
    def uptoken():
        access_key = '******************************************'
        secret_key = '******************************************'
    
        # 创建qiniu对象
        q = qiniu.Auth(access_key, secret_key)
    
        # 储存空间的名称
        bucket = 'zlbbs'
    
        # 参数存储空间的名字
        token = q.upload_token(bucket)
        return jsonify({'uptoken': token})
    
    
    if __name__ == "__main__":
        app.run(debug=True)
    
  • zlqiniu.js

    
    'use strict';
    
    var zlqiniu = {
    	'setUp': function(args) {
    		var domain = args['domain'];
    		var params = {
                browse_button:args['browse_btn'],
    			runtimes: 'html5,flash,html4', //上传模式,依次退化
    			max_file_size: '500mb', //文件最大允许的尺寸
    			dragdrop: false, //是否开启拖拽上传
    			chunk_size: '4mb', //分块上传时,每片的大小
    			uptoken_url: args['uptoken_url'], //ajax请求token的url
    			domain: domain, //图片下载时候的域名
    			get_new_uptoken: false, //是否每次上传文件都要从业务服务器获取token
    			auto_start: true, //如果设置了true,只要选择了图片,就会自动上传
                unique_names: true,
                multi_selection: false,
                filters: {
                    mime_types :[
                        {title:'Image files',extensions: 'jpg,gif,png'},
                        {title:'Video files',extensions: 'flv,mpg,mpeg,avi,wmv,mov,asf,rm,rmvb,mkv,m4v,mp4'}
                    ]
                },
    			log_level: 5, //log级别
    			init: {
    				'FileUploaded': function(up,file,info) {
    					if(args['success']){
    						var success = args['success'];
    						file.name = domain + file.target_name;
    						success(up,file,info);
    					}
    				},
    				'Error': function(up,err,errTip) {
    					if(args['error']){
    						var error = args['error'];
    						error(up,err,errTip);
    					}
    				},
                    'UploadProgress': function (up,file) {
                        if(args['progress']){
                            args['progress'](up,file);
                        }
                    },
                    'FilesAdded': function (up,files) {
                        if(args['fileadded']){
                            args['fileadded'](up,files);
                        }
                    },
                    'UploadComplete': function () {
                        if(args['complete']){
                            args['complete']();
                        }
                    }
    			}
    		};
    
    		// 把args中的参数放到params中去
    		for(var key in args){
    			params[key] = args[key];
    		}
    		var uploader = Qiniu.uploader(params);
    		return uploader;
    	}
    };
    
    
  • 前端代码

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
        <script src="https://cdn.staticfile.org/Plupload/2.1.1/moxie.js"></script>
        <script src="https://cdn.staticfile.org/Plupload/2.1.1/plupload.dev.js"></script>
        <script src="https://cdn.staticfile.org/qiniu-js-sdk/1.0.14-beta/qiniu.js"></script>
        <script src="{{ url_for('static',filename='zlqiniu.js') }}"></script>
        <script>
            window.onload = function () {
                zlqiniu.setUp({
                    // 这里用你绑定的域名, 但是我这里用的测试域名
                    'domain': 'http://pw7ro1ig9.bkt.clouddn.com/',
                    // 按钮id
                    'browse_btn': 'upload-btn',
                    // 访问后端的路径
                    'uptoken_url': '/uptoken/',
                    // 成功后的回调
                    'success': function (up,file,info) {
                        // file.name是图片的链接
                        var image_url = file.name;
                        var imageInput = document.getElementById("image-input");
                        // 把图片的url赋值给input的value
                        imageInput.value = image_url;
    
                        var img = document.getElementById("img");
                        // 把图片的链接赋值给img的src
                        img.setAttribute("src", image_url);
                    }
                });
            }
        </script>
    </head>
    <body>
        <button id="upload-btn">上传文件</button>
        <input type="text" id="image-input">
        <img src="" alt="" id="img">
    </body>
    </html>
    
    
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

只因为你温柔

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值