Django之上传文件
最简单的文件上传方式:
后端代码:
def f1(request): if request.method == "GET": return render(request,"f1.html") else: import os print(request.FILES) #这里是文件的数据 request.POST 是取文本的数据 file_obj = request.FILES.get("fafafa") #获取用户上传的文件 print(file_obj.name) #文件名 print(file_obj.size) #文件大小 f = open(os.path.join("static",file_obj.name),"wb") for chunk in file_obj.chunks(): f.write(chunk) f.close() return render(request,"f1.html")
前端代码:
Title
基于Form验证的文件操作:
后端操作:
class F2Form(Form): user = fields.CharField() fafafa = fields.FileField()def f2(request): """ 文件上传 :param request: :return: """ if request.method == "GET": obj = F2Form() return render(request,"f2.html",{ "obj":obj}) else: obj = F2Form(data=request.POST,files=request.FILES) if obj.is_valid(): print(obj.cleaned_data.get("fafafa").name) #拿文件名 print(obj.cleaned_data.get("fafafa").size) #拿文件大小 return render(request,"f2.html",{ "obj":obj})
前端代码:
Title
Ajax 的上传文件:
1.XMLHttpResponse方式:
后端:
import osdef upload(request): if request.method == "GET": return render(request,'upload.html') else: print(request.POST,request.FILES) file_obj = request.FILES.get('fafafa') file_path = os.path.join("static",file_obj.name) with open(file_path,'wb') as f: for chunk in file_obj.chunks(): f.write(chunk) return HttpResponse(file_path)
前端:
原生Ajax上传文件
上传 //存放路径
2.jQuery Ajax方式:
前端:
jQuery Ajax上传文件
上传 //存放路径
3.伪Ajax方式:
前端:伪Ajax上传解决了浏览器低版本问题,应用了iframe提交form表单不刷新页面的特点。
伪 Ajax上传文件
----- END ------