视频托管平台
我们图片,视频不在放在media中,因为影响服务器性能
# 存储视频,图片,文件
1 meida
2 第三方
- 七牛云 ====》空间存储
- 阿里云 ====》桶存储
-其他
3 自己搭建
-ceph(重),minio,fastdfs\
FastDFS:https://zhuanlan.zhihu.com/p/372286804
#使用七牛云投管
'''
上传文件流程
-前段选择视频----》上传到后端-----》后端把视频上传到七牛云---》返回地址---》后端存储到数据库
-前段使用js---->上传到七牛云——————》七牛云返回地址-----》前段向后端发送ajax请求,把视频地址发送到后端----》后端存储到数据库
'''
Python使用七牛云
from qiniu import Auth, put_file
q = Auth('', '')
#要上传的空间
bucket_name = "文件名"
#上传后保存的文件名
key = "文件名"
#生成上传 Token,可以指定过期时间等
token = q.upload_token(bucket_name, key, 3600)
#要上传文件的本地路径
localfile = './1.mp4'
ret, info = put_file(token, key, localfile, version='v2')
#ret, info = put_data(token, key, files)直接上传内容
print(info)
print(ret)
print('域名'+key)
生成时间戳防盗链
from qiniu.services.cdn.manager import create_timestamp_anti_leech_url
import time
host = 'http://a.example.com'
# 配置时间戳时指定的key
encrypt_key = ''
# 资源路径
file_name = 'a/b/c/example.jpeg'
# 查询字符串,不需要加?
query_string = ''
# 截止日期的时间戳,秒为单位,3600为当前时间一小时之后过期
deadline = int(time.time())+3600
timestamp_url = create_timestamp_anti_leech_url(host, file_name, query_string, encrypt_key, deadline)
print(timestamp_url)
vue使用七牛云
安装
npm install qiniu-js
导入
const qiniu = require('qiniu-js')
// or
import * as qiniu from 'qiniu-js'
使用
#qiniu.upload 返回一个 observable 对象用来控制上传行为,observable 对像通过 subscribe 方法可以被 observer 所订阅,订阅同时会开始触发上传,同时返回一个 subscription 对象,该对象有一个 unsubscribe 方法取消订阅,同时终止上传行为
文件上传
const observable = qiniu.upload(file, key, token, putExtra, config)
const subscription = observable.subscribe(observer) // 上传开始
// or
const subscription = observable.subscribe(next, error, complete) // 这样传参形式也可以
subscription.unsubscribe() // 上传取消
图片上传前压缩
const options = {
quality: 0.92,
noCompressIfLarger: true
// maxWidth: 1000,
// maxHeight: 618
}
qiniu.compressImage(file, options).then(data => {
const observable = qiniu.upload(data.dist, key, token, putExtra, config)
const subscription = observable.subscribe(observer) // 上传开始
})