zoukankan      html  css  js  c++  java
  • Django上传文件的两种方式

    基于form表单上传文件

    HTML

    <h3>基于form表单的上传文件</h3>
    
    <form action="" method="post" enctype="multipart/form-data">
        {% csrf_token %}
        <p><input type="text" name="user"></p>
        <p><input type="file" name="f"></p>
        <input type="submit">
    </form>
    

    view

    def index(request):
        if request.method=="POST":
    
            print(request.POST)
            print(request.FILES.get("f"))
            obj=request.FILES.get("f")
            name=obj.name
            f_write=open(name,"wb")
            for  line in obj:
                f_write.write(line)
    
            return HttpResponse("success")
    
        return render(request,"index.html")

    基于Ajax上传文件

    FormData是什么呢?

    XMLHttpRequest Level 2添加了一个新的接口FormData.利用FormData对象,我们可以通过JavaScript用一些键值对来模拟一系列表单控件,我们还可以使用XMLHttpRequest的send()方法来异步的提交这个"表单".比起普通的ajax,使用FormData的最大优点就是我们可以异步上传一个二进制文件

    HTML 

    <h3>基于ajax的文件上传</h3>
    
    {% csrf_token %}
    <p><input type="text" id="pwd"></p>
    <p><input type="file" id="file"></p>
    <button class="ajax_btn">提交</button>
    
    <script>
        $(".ajax_btn").click(function () {
    
            var formdata=new FormData();
            formdata.append("pwd",$("#pwd").val());
            formdata.append("csrfmiddlewaretoken",$("[name='csrfmiddlewaretoken']").val());
            formdata.append("f",$("#file")[0].files[0]);
    
            $.ajax({
                url:"/put_ajax/",
                type:"post",
                data:formdata,
                contentType:false,
                processData:false,
                success:function (data) {
                    console.log(data);
                }
    
            })
    
        })
    </script>

    view

    def put_ajax(request):
    
        print(request.POST)
        print(request.FILES)
    
        return HttpResponse("OK")
  • 相关阅读:
    C语言指针和数组
    C语言malloc、calloc函数
    33、二叉树的后序遍历序列
    进程、线程、协程
    8、字符串转整数
    51、数组中的逆序对
    49、丑数
    19、正则表达式匹配
    32、从上到下打印二叉树
    leetcode5:最长回文子串
  • 原文地址:https://www.cnblogs.com/iyouyue/p/8424197.html
Copyright © 2011-2022 走看看