- 如何配置上传的文件路径
- 如何解决富文本编辑器文件上传的问题
配置上传:
1、在settings.py中配置MEDIA_URL和MEDIA_ROOT
2、urls.py中配置路由
from django.views.static.serve
from django.conf import settings
url(r"^uploads/(?P<path>.*)$", \
serve, \
{"document_root": settings.MEDIA_ROOT,}),
3、在model中设置图片的上传位置和路径
class User(AbstractUser):
avatar = models.ImageField(upload_to='avatar/%Y/%m',\
default='avatar/default.png', max_length=200, \
blank=True, null=True, verbose_name='用户头像')
...
富文本编辑器文件上传
config.js:
KindEditor.ready(function(K) {
K.create('textarea[name="content"]', {
width : "800px",
height : "200px",
uploadJson:
'/admin/upload/kindeditor',
});
});
urls配置:
url(r'^admin/upload/(?P<dir_name>[^/]+)$', upload_image, name='upload_image'),
upload.py:
from django.http import HttpResponse
from django.conf import settings
from django.views.decorators.csrf import csrf_exempt
import os
import uuid
import json
import datetime as dt
@csrf_exempt
def upload_image(request, dir_name):
##################
# kindeditor图片上传返回数据格式说明:
# {"error": 1, "message": "出错信息"}
# {"error": 0, "url": "图片地址"}
##################
result = {"error": 1, "message": "上传出错"}
files = request.FILES.get("imgFile", None)
if files:
result =image_upload(files, dir_name)
return HttpResponse(json.dumps(result), content_type="application/json")
#目录创建
def upload_generation_dir(dir_name):
today = dt.datetime.today()
dir_name = dir_name + '/%d/%d/' %(today.year,today.month)
if not os.path.exists(settings.MEDIA_ROOT + dir_name):
os.makedirs(settings.MEDIA_ROOT + dir_name)
return dir_name
# 图片上传
def image_upload(files, dir_name):
#允许上传文件类型
allow_suffix =['jpg', 'png', 'jpeg', 'gif', 'bmp']
file_suffix = files.name.split(".")[-1]
if file_suffix not in allow_suffix:
return {"error": 1, "message": "图片格式不正确"}
relative_path_file = upload_generation_dir(dir_name)
path=os.path.join(settings.MEDIA_ROOT, relative_path_file)
if not os.path.exists(path): #如果目录不存在创建目录
os.makedirs(path)
file_name=str(uuid.uuid1())+"."+file_suffix
path_file=os.path.join(path, file_name)
file_url = settings.MEDIA_URL + relative_path_file + file_name
open(path_file, 'wb').write(files.file.read())
return {"error": 0, "url": file_url}
194

被折叠的 条评论
为什么被折叠?



