在 Django 中使用 AJAX 上传 CSV 文件

我想使用 ajax 查询上传 CSV 文件。


模板:


<form id="attendance-form" method="POST" enctype="multipart/form-data">

  <input type="file" id="upload-attendance" name="employee-attendance-file">

</form>

阿贾克斯:


$("#upload-attendance").change(function(e) {

    e.preventDefault();  // disables submit's default action

    var input = $("#upload-attendance")[0];

    var employeeAttendanceFile = new FormData();

    employeeAttendanceFile.append("attendance-file", $('#upload-attendance')[0].files[0]);

    console.log(employeeAttendanceFile);

    $.ajax({

        url: '{% url "attendance:employee-attendance-upload" %}',

        type: 'POST',

        headers:{

            "X-CSRFToken": '{{ csrf_token }}'

        },

        data: {

            "employee_attendance_file": employeeAttendanceFile,

        },

    

        dataType: "json",

        success: function(data) {

            data = JSON.parse(data); // converts string of json to object

        },

        cache: false,

        processData: false,

        contentType: false,

        });

    });

上传 CSV 文件后,当我的console.log文件变量 ( console.log(employeeAttendanceFile);) 没有任何返回。当我从 Django 视图获取 ajax 请求时,它也返回None( print(csv_file))。


# views.py

class ImportEmployeeAttendanceAJAX( View):

    def post(self, request):

        csv_file = request.FILES.get("employee_attendance_file")

        print(csv_file)

我究竟做错了什么?


繁星淼淼
浏览 120回答 1
1回答

POPMUISE

通过 FormData 对象上传数据时,您必须直接传递它&nbsp;&nbsp;&nbsp;&nbsp;data:&nbsp;employeeAttendanceFile,此外,当您尝试访问文件时,您为上传文件设置的名称必须匹配。&nbsp;&nbsp;&nbsp;&nbsp;csv_file&nbsp;=&nbsp;request.FILES.get("attendance-file")
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript