博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Django之上传文件
阅读量:5044 次
发布时间:2019-06-12

本文共 2211 字,大约阅读时间需要 7 分钟。

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
{
% csrf_token %}

  基于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
{
% csrf_token %} {
{ obj.user }} {
{ obj.fafafa }}

   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 ------

转载于:https://www.cnblogs.com/george92/p/11481530.html

你可能感兴趣的文章