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}
View Code

 

然后我们在url 里面写入路由

技术分享

最后我们要在富文本编辑器里面写入路径

技术分享

 

 

 

 

 

以上是关于django 开发之文件上传的主要内容,如果未能解决你的问题,请参考以下文章

python Django之文件上传

Django之AJAX文件上传

框架----Django之文件上传

django之创建第10-1个项目-图片上传并记录上传时间

Django框架 之 Form表单和Ajax上传文件

Django框架 之 Form表单和Ajax上传文件