1. 安装django-aliyun-oss2-storage包
linux上用 pip install django-aliyun-oss2-storage 无报错,顺利安装
windows上报错:
(python3_sbs) F:\projects\virtualenv\python3_sbs\Scripts>pip install django-aliyun-oss2-storage Collecting django-aliyun-oss2-storage Using cached django-aliyun-oss2-storage-0.1.5.tar.gz Complete output from command python setup.py egg_info: Traceback (most recent call last): File "<string>", line 1, in <module> File "C:\Users\super\AppData\Local\Temp\pip-build-pb4u0qtw\django-aliyun-oss2-storage\setup.py", line 5, in <module> README = readme.read() UnicodeDecodeError: 'gbk' codec can't decode byte 0x91 in position 63: illegal multibyte sequence ---------------------------------------- Command "python setup.py egg_info" failed with error code 1 in C:\Users\super\AppData\Local\Temp\pip-build-pb4u0qtw\django-aliyun-oss2-storage\
解决方法:
1. 下载源码 django-aliyun-oss2-storage-0.1.5.tar.gz 地址: https://github.com/xiewenya/django-aliyun-oss2-storage
2. 解压进入解压后的文件夹
3. 打开README.md 删除所有内容
4. 安装
python setup.py install
2. 设置setting.py
ACCESS_KEY_ID = "xxxx" ACCESS_KEY_SECRET = "xxxx" END_POINT = "oss-cn-beijing.aliyuncs.com" PREFIX_URL = 'http://' BUCKET_NAME = "xxx" ALIYUN_OSS_CNAME = "" # 自定义域名,如果不需要可以不填写 BUCKET_ACL_TYPE = "public-read" # private, public-read, public-read-write DEFAULT_FILE_STORAGE = 'aliyun_oss2_storage.backends.AliyunMediaStorage' MEDIA_URL = '/media/' MEDIA_ROOT = "media"
顺便提一下,当在xadmin后台上传文件, filename的时候,文件会上传到路径
PREFIX_URL + BUCKET_NAME+"."END_POINT+MEDIA_URL+filename
但是在django 模板渲染html的时候,我们取filename是按照格式:
<img src="/UploadFiles/2021-04-08/{{ MEDIA_URL }}{{ object.image }}">前端html render出来后,其实看到的路径是:
<img src="/UploadFiles/2021-04-08/timg.jpg">根本取不到阿里云服务器上的文件。所以需要设置个新的变量,如 ALI_MEDIA_URL在模板渲染的时候替换MEDIA_URL.
方法:
1. 创建新文件my_processor.py
from __future__ import unicode_literals import itertools from django.conf import settings from django.middleware.csrf import get_token from django.utils.encoding import force_text from django.utils.functional import SimpleLazyObject, lazy def ali_media(request): """ Adds media-related context variables to the context. """ return {'ALI_MEDIA_URL': settings.ALI_MEDIA_URL}2. setting.py中
ALI_MEDIA_URL = PREFIX_URL + BUCKET_NAME + "." + END_POINT + '/media/' TEMPLATES = [ { 'BACKEND': 'django.template.backends.django.DjangoTemplates', 'DIRS': [os.path.join(BASE_DIR, 'templates')], 'APP_DIRS': True, 'OPTIONS': { 'context_processors': [ 'django.template.context_processors.debug', 'django.template.context_processors.request', 'django.contrib.auth.context_processors.auth', 'django.contrib.messages.context_processors.messages', 'django.template.context_processors.media', 'utils.sbs_processor.ali_media', ], }, }, ]3. 在模板中设置为:
<img src="/UploadFiles/2021-04-08/{{ ALI_MEDIA_URL }}{{ object.image }}">3. 设置uediitor
在DjangoUeditor/view.py中
之前存储到本地的代码是:
# 保存上传的文件 def save_upload_file(PostFile, FilePath): try: f = open(FilePath, 'wb') for chunk in PostFile.chunks(): f.write(chunk) except Exception as e: f.close() return u"写入文件错误:%s" % e f.close() return u"SUCCESS"我们模仿这个写一个上传到阿里云:
#保存上传文件到aliyun def save_upload_file_to_aliyun(PostFile, Outputfile): access_key = ACCESS_KEY_ID secret_key = ACCESS_KEY_SECRET bucket_name = BUCKET_NAME try: import oss2 auth = oss2.Auth(access_key, secret_key) bucket = oss2.Bucket(auth, END_POINT, bucket_name) # ret, info = put_file(token, key, upload_file) result=bucket.put_object(Outputfile, PostFile) return u"SUCCESS" # if ret.get('key',None) == None: # raise Exception('upload error') # else: # return u"SUCCESS" except Exception as e: print(str(e)) return str(e)在哪调用呢"htmlcode">
state = save_upload_file(file, os.path.join(OutputPath, OutputFile))替换成:
state = save_upload_file_to_aliyun(file, OutputPathFormat)配置结束。ueditor和xadmin上传的图片都会上传到阿里云oss中
以上这篇django 配置阿里云OSS存储media文件的例子就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持。
圆月山庄资源网 Design By www.vgjia.com
免责声明:本站文章均来自网站采集或用户投稿,网站不提供任何软件下载或自行开发的软件! 如有用户或公司发现本站内容信息存在侵权行为,请邮件告知! 858582#qq.com
稳了!魔兽国服回归的3条重磅消息!官宣时间再确认!
昨天有一位朋友在大神群里分享,自己亚服账号被封号之后居然弹出了国服的封号信息对话框。
这里面让他访问的是一个国服的战网网址,com.cn和后面的zh都非常明白地表明这就是国服战网。
而他在复制这个网址并且进行登录之后,确实是网易的网址,也就是我们熟悉的停服之后国服发布的暴雪游戏产品运营到期开放退款的说明。这是一件比较奇怪的事情,因为以前都没有出现这样的情况,现在突然提示跳转到国服战网的网址,是不是说明了简体中文客户端已经开始进行更新了呢?
更新日志
- 雨林唱片《赏》新曲+精选集SACD版[ISO][2.3G]
- 罗大佑与OK男女合唱团.1995-再会吧!素兰【音乐工厂】【WAV+CUE】
- 草蜢.1993-宝贝对不起(国)【宝丽金】【WAV+CUE】
- 杨培安.2009-抒·情(EP)【擎天娱乐】【WAV+CUE】
- 周慧敏《EndlessDream》[WAV+CUE]
- 彭芳《纯色角3》2007[WAV+CUE]
- 江志丰2008-今生为你[豪记][WAV+CUE]
- 罗大佑1994《恋曲2000》音乐工厂[WAV+CUE][1G]
- 群星《一首歌一个故事》赵英俊某些作品重唱企划[FLAC分轨][1G]
- 群星《网易云英文歌曲播放量TOP100》[MP3][1G]
- 方大同.2024-梦想家TheDreamer【赋音乐】【FLAC分轨】
- 李慧珍.2007-爱死了【华谊兄弟】【WAV+CUE】
- 王大文.2019-国际太空站【环球】【FLAC分轨】
- 群星《2022超好听的十倍音质网络歌曲(163)》U盘音乐[WAV分轨][1.1G]
- 童丽《啼笑姻缘》头版限量编号24K金碟[低速原抓WAV+CUE][1.1G]