python Django之文件上传
使用Django框架进行文件上传共分为俩种方式
一、方式一 通过form表单进行文件上传
#=========================================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表单上传文件
========================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>
一、方式二 通过form组件进行文件上传
#======================================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组件上传文件
<!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>
时间: 2024-10-12 20:10:47