django 开发之文件上传
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了django 开发之文件上传相关的知识,希望对你有一定的参考价值。
创建一个文件夹用于保存上传的路径
然后在setting 里面配置文件的上穿的路径
#配置文件的上传路径
MEDIA_URL=‘/uploads‘
MEDIA_ROOT= os.path.join(BASE_DIR,‘uploads‘)
接着在url里面配置用户图像上传的路由
解决富文本编辑器的图片长传问题:
首先要做的就是创建一个upload python 文件 在你的app下创建、
具体的代码如下
1 # -*- coding: utf-8 -*- 2 from django.http import HttpResponse 3 from django.conf import settings 4 from django.views.decorators.csrf import csrf_exempt 5 import os 6 import uuid 7 import json 8 import datetime as dt 9 #这个装饰器用于不再进行表单验证提交 10 @csrf_exempt 11 def upload_image(request, dir_name): 12 ################## 13 # 这是kindeditor想要的格式 14 # kindeditor图片上传返回数据格式说明: 15 # {"error": 1, "message": "出错信息"} 16 # {"error": 0, "url": "图片地址"} 17 ################## 18 result = {"error": 1, "message": "上传出错"} 19 #imgFile来自于富文本编辑器查看源码之后找到的它定义的文件名字 20 files = request.FILES.get("imgFile", None) 21 if files: 22 result =image_upload(files, dir_name) 23 return HttpResponse(json.dumps(result), content_type="application/json") 24 25 #目录创建 26 def upload_generation_dir(dir_name): 27 today = dt.datetime.today() 28 dir_name = dir_name + ‘/%d/%d/‘ %(today.year,today.month) 29 if not os.path.exists(settings.MEDIA_ROOT + dir_name): 30 os.makedirs(settings.MEDIA_ROOT + dir_name) 31 return dir_name 32 33 # 图片上传 34 def image_upload(files, dir_name): 35 #允许上传文件类型 36 allow_suffix =[‘jpg‘, ‘png‘, ‘jpeg‘, ‘gif‘, ‘bmp‘] 37 file_suffix = files.name.split(".")[-1] 38 if file_suffix not in allow_suffix: 39 return {"error": 1, "message": "图片格式不正确"} 40 relative_path_file = upload_generation_dir(dir_name) 41 path=os.path.join(settings.MEDIA_ROOT, relative_path_file) 42 if not os.path.exists(path): #如果目录不存在创建目录 43 os.makedirs(path) 44 file_name=str(uuid.uuid1())+"."+file_suffix 45 path_file=os.path.join(path, file_name) 46 file_url = settings.MEDIA_URL + relative_path_file + file_name 47 #写入操作,二进制形式,最终完成上传,真正保存图片 48 open(path_file, ‘wb‘).write(files.file.read()) 49 return {"error": 0, "url": file_url}
然后我们在url 里面写入路由
最后我们要在富文本编辑器里面写入路径
以上是关于django 开发之文件上传的主要内容,如果未能解决你的问题,请参考以下文章