django图片上传到oss_django 配置阿里云OSS存储media文件的例子
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 "", line 1, in
File "C:\Users\super\AppData\Local\Temp\pip-build-pb4u0qtw\django-aliyun-oss2-storage\setup.py", line 5, in
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\
解决方法:
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是按照格式:
前端html render出来后,其实看到的路径是:
根本取不到阿里云服务器上的文件。所以需要设置个新的变量,如 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. 在模板中设置为:
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)
在哪调用呢? 找到:
state = save_upload_file(file, os.path.join(OutputPath, OutputFile))
替换成:
state = save_upload_file_to_aliyun(file, OutputPathFormat)
配置结束。ueditor和xadmin上传的图片都会上传到阿里云oss中
以上这篇django 配置阿里云OSS存储media文件的例子就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持龙方网络。
django图片上传到oss_django 配置阿里云OSS存储media文件的例子相关推荐
- 手把手教你从0到1通过 Express 完成图片上传并保存至阿里云OSS功能(附详细源码)
- oss客户端工具_阿里云服务器ECS上使用ossfs工具挂载阿里云OSS存储
介绍:阿里云对象存储服务(Object Storage Service,简称OSS)可以提供基于网络的数据存取服务.使用OSS,可以通过网络随时存储和调用包括文本.图片.音频和视频等在内的各种非结构化 ...
- 图片上传到七牛云/阿里云的OSS
1.准备 七牛云/阿里云OSS https://github.com/pfinal/storage 2.composer安装包 安装composer require pfinal/storage 本地 ...
- django图片上传到oss_Django上传文件
继前文的项目准备中,涉及到上传歌曲,所以有了这一过程,在项目目录下设置了资源文件夹暂存歌曲,完场云端上传后即删除所有文件 上传表单 主要设置了上传提交两个选项,定义了上传属性,方便后续获取到文件对象, ...
- 从零开始,打造基于阿里IoT云平台的LoRa解决方案(3)_配置产品功能,将上传数据解析为阿里云平台数据格式
本篇是 <从零开始,打造基于阿里IoT云平台的LoRa解决方案>系列教程的第3 篇,将为大家讲解:1-如何配置产品功能?2-如何将产品的上传数据解析为阿里云平台数据格式? 查看阿里物联网平 ...
- Tinymce富文本编辑器图片上传即编辑配置详解
Tinymce富文本编辑器 本站使用的也是Tinymce富文本编辑器,非常的好用,就是图片上传和编辑配置上有点麻烦,当时没有看完Tinymce官网的资料,导致浪费了点时间,下面就把图片上传的配置分享给 ...
- mysql数据库备份到oss_备份MySQL数据库并上传到阿里云OSS存储
1. 环境配置 要将本地文件上传到阿里云oss中, 必须使用阿里云提供的工具 ossutil, 有32位,也有64位的, Linux和Windows都有.具体可以到阿里云官网下载 本文以Linux系统 ...
- 前端(react)上传到阿里云OSS存储 实例
需求背景 由于现有的后台管理系统,上传的视频越来越大,加上上传视频较慢,后端小哥提出直接从前端上传视频或者其他文件到阿里云OSS存储. 阿里云OSS 阿里云OSS文档介绍,这里不做过多赘述 安装 原本 ...
- Docker 镜像上传到私有云和阿里云的超详细图文步骤
打开阿里云登录账号打开控制台 阿里云-为了无法计算的价值 (aliyun.com) 进入控制台点击折叠框 找到容器服务里面的容器镜像服务 找到实例创建个人实例记住你输入的密码 创建命名空间 创建镜 ...
最新文章
- 爬虫之switch_to切换frame标签
- Linux多线程实践(一)线程基本概念和理论
- mysql 备库 hang住_mysql主键的缺少导致备库hang住
- sort(()={return Math.random()-0.5)}乱序数组不准确
- windbg-内存破坏实例分析
- return 输出为空php,thinkphp5 返回json数据的方法---以及返回json为空的原因
- python中pd.read_Windows下Python的pd.read_excel()报错
- drools 将添加switch支持
- 《SQL Server 2005开发技术大全》分享一本书
- 管理感悟:没有活跃用户量,谈广告都是开玩笑
- 行为型模式17-责任链模式
- ESXI主机密码忘记恢复
- C++ GBD调试
- Java微信支付API文档测试
- Spring boot集成RabbitMQ(山东数漫江湖)
- itext转html为pdf 锚点,flying saucer html转pdf经验分享
- 终于可以卖广告盈利了——写博客,赚广告费!
- SpringCloud Alibaba Senta处理分布式事务
- python给定一个整数n、判断n是否为素数_Python判断一个整数是否为素数
- PTA函数题相关接口(未完)
热门文章
- chown 和chgrp 软链接
- 关于mysql中GROUP_CONCAT函数的使用
- php解决与处理网站高并发 大流量访问的方法
- 【小技巧】【map】【set】【Java】map /set 的遍历
- android 开发艾特功能,Android Binder
- python变量生命周期_python 变量定义及变量生命周期
- sublime配置python环境变量_Sublime Python环境配置
- php html登陆逻辑,保持演示文稿(HTML)和逻辑(PHP)分开
- 富士通台式电脑_电脑bios怎么进入-电脑bios进入方法介绍
- php代码expl,php – 参数号无效:参数未定义Explination