七牛云圖片上傳
可查看七牛云上傳圖片的SDK
from flask import Flask, render_template, request, jsonify
from qiniu import Auth, put_data
app = Flask(__name__)
@app.route('/')
def index():
return render_template('index.html')
# 原始上傳文件的示例
@app.route('/upload_raw/', methods=['GET', 'POST'])
def upload_raw():
file_obj = request.files.get('f1')
file_obj.save('a.png')
return 'success'
# 七牛云上傳
@app.route('/upload_qiniu/', methods=['GET', 'POST'])
def upload_qiniu():
file = request.files.get('f2')
# 七牛云的密鑰管理可以查看
access_key = '******'
secret_key = '******'
q = Auth(access_key=access_key, secret_key=secret_key)
# elm-flask創(chuàng)建的存儲空間名
token = q.upload_token('elm-flask')
ret, info = put_data(up_token=token, key=None, data=file.read())
print(ret.get('key'))
return "success"
# 只提供token接口
@app.route('/uptoken/')
def uptoken():
# 七牛云的密鑰管理可以查看
access_key = '*****'
secret_key = '*****'
q = Auth(access_key=access_key, secret_key=secret_key)
# elm-flask創(chuàng)建的存儲空間名
token = q.upload_token('elm-flask')
return jsonify({"uptoken": token})
if __name__ == '__main__':
app.run(debug=True)
<!DOCTYPE html>
<html lang="zh">
<head>
<meta charset="UTF-8">
<title>上傳文件示例</title>
</head>
<body>
{# 普通上傳 #}
<form action="/upload_raw/" method="post" enctype="multipart/form-data">
<label for="fid"><input type="file" id="fid" name="f1"></label>
<input type="submit" value="上傳">
</form>
<br>
{# 七牛云上傳 #}
<form action="/upload_qiniu/" method="post" enctype="multipart/form-data">
<label for="fid2"><input type="file" id="fid2" name="f2"></label>
<input type="submit" value="上傳">
</form>
<br>
<br>
{# 七牛云使用前端上傳 #}
<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="https://cdn.bootcss.com/jquery/3.3.1/jquery.min.js"></script>
<script src="{{ url_for('static', filename="itqiniu.js") }}"></script>
<button id="upload-btn">上傳文件</button>
<input type="text" id="image-input">
[外鏈圖片轉(zhuǎn)存失敗(img-ClhLBywP-1562225639183)(https://mp.csdn.net/mdeditor/86290075)]
<script>
window.onload = function () {
itqiniu.setUp({
'domain': 'http://pekvn6or3.bkt.clouddn.com/',
'browse_btn': 'upload-btn',
'uptoken_url': '/uptoken/',
'success': function (up, file, info) {
var image_url = file.name;
var image_input = document.getElementById('image-input');
image_input.value = image_url;
var img = document.getElementById('img');
img.setAttribute('src', image_url);
}
});
}
</script>
</body>
</html>
// js上傳七牛云
window.onload = function () {
itqiniu.setUp({
// domain 為七牛云創(chuàng)建空間所生成的域名
'domain': 'http://pk7rw1paf.bkt.clouddn.com/',
// browse_btn 為html的button的id值
'browse_btn': 'upload-btn',
'uptoken_url': '/uptoken/',
'success': function (up, file, info) {
let image_url = file.name;
let image_input = document.getElementById('image-input');
image_input.value = image_url;
// 將上傳的圖片回顯到頁面上
let img = document.getElementById('image-show');
img.setAttribute('src', image_url);
}
});
};
var itqiniu = {
'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, //是否每次上傳文件都要從業(yè)務(wù)服務(wù)器獲取token
auto_start: true, //如果設(shè)置了true,只要選擇了圖片,就會自動上傳
unique_names: false,
save_key: true,
multi_selection: false,
filters: {
mime_types :[
{title:'Image files',extensions: 'jpg,gif,png,jpeg'},
{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'];
var obj = JSON.parse(info);
var domain = up.getOption('domain');
file.name = domain + obj.key;
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中的參數(shù)放到params中去
for(var key in args){
params[key] = args[key];
}
var uploader = Qiniu.uploader(params);
return uploader;
}
};