为了账号安全,请及时绑定邮箱和手机立即绑定

Django如何在内存里处理ajax传递进来的Excel文件?

Django如何在内存里处理ajax传递进来的Excel文件?

大话西游666 2019-03-12 09:15:42
希望通过ajax从页面上传一些字段和一个excel文件进行处理前端部分是这样写的<form method="post">    {% csrf_token %}    <input class='a' type="text">    <input class="up-files" type="file">    <button class="up-btn">提交</button></form>#js 部分<script>$('.wage-add-btn').click(function () {         $.ajaxSetup({     data: {csrfmiddlewaretoken: '{{ csrf_token }}' },    });         if(confirm("请仔细检查表格确认上传")) {             var a = $('.a').val();             var files = $('.up-files').val();             $.ajax({                type:"POST",                data: {a:a, files:files},                url: "{% url 'add' %}",                cache: false,                dataType: "html",                success: function(){                    alert('成功')                },                error: function(){                    alert('失败')                }            });            return false;         }    });</script>views.py:def add(request):if request.method == 'POST':    if request.is_ajax():        a = request.POST.get('a')        files = request.POST.get('files')        data = xlrd.open_workbook(files)return render(request, 'index.html', locals())这里报错:IOError: [Errno 2] No such file or directory: u'C:\fakepath\u5956u54c1u53d1u653eu767bu8bb0u886835.xls'请问是哪里操作不对吗?是否有完整的实现可以借鉴?
查看完整描述

3 回答

?
德玛西亚99

TA贡献1770条经验 获得超3个赞

文件是通过request.FILE传输,不是通过POST


查看完整回答
反对 回复 2019-03-20
?
倚天杖

TA贡献1828条经验 获得超3个赞

前端的ajax写的不对,file的上传要借助formData,



<form method="post">

{% csrf_token %}

<input class='a' type="text">

<input class="up-files" type="file">

<button class="up-btn">提交</button>

</form>


js 部分

<script>

$('.wage-add-btn').click(function () {


     $.ajaxSetup({

 data: {csrfmiddlewaretoken: '{{ csrf_token }}' },

});

     if(confirm("请仔细检查表格确认上传")) {

         // var a = $('.a').val();

         // var files = $('.up-files').val();

         var form = new FormData();

         form.append("file", files);

         form.append("a", a);

         $.ajax({

            type:"POST",

            data: form,

            url: "{% url 'add' %}",

            cache: false,

            dataType: "html",

            success: function(){

                alert('成功')

            },

            error: function(){

                alert('失败')

            }

        });

        return false;

     }

});

</script>


查看完整回答
反对 回复 2019-03-20
  • 3 回答
  • 0 关注
  • 923 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号