引入webuploader的css和js
<link rel="stylesheet" type="text/css" href="{% static ‘webuploader/webuploader.css‘ %}"/> <script type="text/javascript" src="{% static ‘webuploader/webuploader.js‘ %}"></script>
{#上传图片到阿里云oss#}
<div id="filePicker1">
<img width="150px" id="logoimg" src="{% static ‘img/1573301808.399324th (1).jpg‘ %}"> #图片预览
<input type="hidden" id="logopalce" name="logo">
</div>
<div id="filePicker">上传图片</div>
<script> var uploader = WebUploader.create({ // 选完文件后,是否自动上传。 auto: true, // swf文件路径 swf: ‘{% static "webuploader / Uploader.swf" %}‘, // 文件接收服务端。 server: ‘{% url "uploadimg" %}‘, // 选择文件的按钮。可选。 // 内部根据当前运行是创建,可能是input元素,也可能是flash. pick: ‘#filePicker‘, #通过id控制 // 只允许选择图片文件。 accept: { title: ‘Images‘, extensions: ‘gif,jpg,jpeg,bmp,png‘, mimeTypes: ‘image/*‘ } }); uploader.on(‘uploadSuccess‘, function (file, response) { $(‘#logoimg‘).attr(‘src‘, response._raw); $(‘#logopalce‘).val(response._raw); }); </script>
import time,random from django.views.decorators.csrf import csrf_exempt #from app01.ali_oss import oss_func @csrf_exempt def uploadimg(request): if request.method == ‘POST‘: year = time.strftime(‘%Y‘, time.localtime(int(time.time()))) month = time.strftime(‘%m‘, time.localtime(int(time.time()))) day = time.strftime(‘%d‘, time.localtime(int(time.time()))) try: path = "article/" + year + ‘/‘ + month + ‘/‘ + day + ‘/‘ f = request.FILES.get(‘file‘) file_name = path + str(random.randint(1000000, 9999999)) + str(int(time.time())) + f.name from urllib.request import urljoin oss_func(fileobj=f.read(), filepath=file_name) file_name = urljoin(‘http://hehe-warehouse.oss-cn-beijing.aliyuncs.com‘, file_name) except Exception as e: file_name = ‘‘ print(e) print(file_name) return HttpResponse(file_name,‘filename‘) else: return HttpResponse(‘‘)
import oss2 #需要安装pip install oss2
def oss_func(fileobj, filepath):
# 阿里云主账号AccessKey拥有所有API的访问权限,风险很高。强烈建议您创建并使用RAM账号进行API访问或日常运维,请登录 https://ram.console.aliyun.com 创建RAM账号。
auth = oss2.Auth(‘LTAI4FnrcAKsmddxnGnD9kor‘, ‘JtlyVYWIykJ2oGkpdv3n9o2Oqxs8na‘)#绿色的换成自己的AccessKey和仓库名字
# Endpoint以杭州为例,其它Region请按实际情况填写。
bucket = oss2.Bucket(auth, ‘http://oss-cn-beijing.aliyuncs.com/‘, ‘hehe-warehouse‘)
return bucket.put_object(filepath, fileobj)
原文:https://www.cnblogs.com/wuyonghe/p/11859068.html