django-文件上传

来源:互联网 发布:韩国ip地址和端口 编辑:程序博客网 时间:2024/06/08 14:49
  1. 如何配置上传的文件路径
  2. 如何解决富文本编辑器文件上传的问题

配置上传:

1、在settings.py中配置MEDIA_URL和MEDIA_ROOT
2、urls.py中配置路由

from django.views.static.servefrom django.conf import settingsurl(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 HttpResponsefrom django.conf import settingsfrom django.views.decorators.csrf import csrf_exemptimport osimport uuidimport jsonimport datetime as dt@csrf_exemptdef 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}
原创粉丝点击