urls.py

urlpatterns = [
    path('admin/', admin.site.urls),
    # ajax 相关
path("ajax_temp/", views.ajax_temp), path("upload/", views.upload), ]

 

views.py

import os
def upload(request):
    print(request.POST)
    print(request.FILES)
    # print(request.body)  # 会报错

    file_obj = request.FILES.get('file_name')
    name = file_obj.name
    with open(os.path.join("media", name), "wb") as f:
        for i in file_obj:
            f.write(i)
    return HttpResponse('上传成功')

  

 

ajax_temp.html

<h3>form表单上传文件</h3>
<form action="/upload/" method="POST" enctype="multipart/form-data">
    {% csrf_token %}
    <input type="text" id="user" name="user">
    <input type="file" id="file1" name="file_name">
    <button id="btn5">ajax上传文件</button>
    <input type="submit">
</form>


<script src="https://cdn.bootcss.com/jquery/3.4.1/jquery.js"></script>

<script>

{#ajax上传文件#}
    $("#btn5").click(function () {
        var formdata = new FormData();
        formdata.append("csrfmiddlewaretoken", $("[name='csrfmiddlewaretoken']").val());
        formdata.append("file_name", $("#file1")[0].files[0]);
        $.ajax({
            url: "/upload/",
            type: "post",
            processData: false,  // 告诉jQuery不要去处理发送的数据
            contentType: false,  // 告诉jQuery不要去设置Content-Type请求头
            data: formdata,
            success: function (data) {
                console.log(data);
            }
        })
    })


</script>