python Django之文件上传
使用Django框架进行文件上传共分为俩种方式
|
1
2
3
|
一、方式一通过form表单进行文件上传 |
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
|
#=========================================FORM表单上传文件========================================def f1(request):#定义f1上传函数 if request.method=='GET':#如果是以GET请求 return render(request,'f1.html')#返回html模板 else:#否则 import os#导入模块 file_obj=request.FILES.get('fafafa')#通过文件的方式获取文件 f=open(os.path.join('static',file_obj.name),'wb')#打开一个文件创建一个文件句柄,写的模式打开 for chunk in file_obj.chunks():#循环对象(chunks是块 代表大小的意思) f.write(chunk)#循环获得对象并写到文件中 f.close()#通过文件句柄,关闭文件 return render(request,'f1.html')#返回到html模板 |
form表单上传文件
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
========================form表单html============================<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <title>Title</title></head><body><form action="/f1/" method="POST" enctype="multipart/form-data"> {% csrf_token %} <p><input type="text" name="user"></p> <p><input type="file" name="fafafa"></p> <p><input type="submit" value="提交"></p></form></body></html> |
|
1
2
3
|
一、方式二通过form组件进行文件上传 |
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
|
#======================================Form组件上传文件========================================class F2Form(Form):#定义一个上传类 user=fields.CharField()#字段是字符串类型 fafafa=fields.FileField()#字段是文件类型def f2(request):#定义一个f2上传文件的函数 import os#导入模块 if request.method=='GET':#如果请求方式GET obj=F2Form()#实例化一个对象 return render(request,'f2.html',{'obj':obj})#携带obj对象返回html else:#否则 obj=F2Form(data=request.POST,files=request.FILES)#实例化对象obj前端标签input获取的数据以request.POST接收,文件信息以request.FILES接收 if obj.is_valid():#通过form组件进行校验如果校验成功就执行下边代码 print(obj.cleaned_data.get('fafafa').name)#打印文件名称 print(obj.cleaned_data.get('fafafa').size)#打印文件大小 f=open(os.path.join('static',obj.cleaned_data.get('fafafa').name),'wb')#打开文件并创建文件句柄,以写的模式打开 for chunk in request.FILES.get('fafafa').chunks():#循环读取文件对象的内容 f.write(chunk)#循环写入到文件中 f.close()#通过文件句柄将文件关闭 return render(request,'f2.html',{'obj':obj})#携带obj对象返回html模板 |
form组件上传文件
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <title>Title</title></head><body><form method="POST" action="/f2/" enctype="multipart/form-data"> {% csrf_token %} <p>{{ obj.user }}</p> <p>{{ obj.fafafa }}</p> <input type="submit" value="提交" /> </form></body></html> |
浙公网安备 33010602011771号