将ajax文件上传请求发送到服务器时,request.FILES为空

时间:2013-11-28 14:15:00

标签: django django-forms

我在index.html中有一个简单的表单:

<div id="Competence-form">
    <form id="competence" method="post" action="/" enctype="multipart/form-data">
    {% csrf_token %}                    
        <input type="file" id="Picture-text" name="comp-pic" />
        <input type="button" name="comp-defaultButton" value="Default" />
    </form>
</div>

这是我在index.js中的ajax请求:

$("#Competence-form").submit(function(event){
    $(".ajaxLogoBoard").show();

    //prevent normal submit when submit button click because check something ...
    event.preventDefault();

    //getting values
    var picture = $("#Picture-text").val();
    var data ={
        picture:picture,
    };

    //send AJAX
    $.ajax({
        url: '/ajax/check',
        data: data,
        dataType: 'json',
        success:function(result){
            // do something
        }

在服务器中我想使用request.FILES,但这个字典是空的:

def competenceCheck(request):
    # ... some code to initialize upload
    # ...
    picture = request.REQUEST['picture']        # this will return the path
    print request.FILES        # but this is empty => <MultiValueDict: {}>
    # ... some code after upload
    # ...

我做错了什么?

1 个答案:

答案 0 :(得分:1)

您无法在Ajax中上传此类文件 - 调试日志记录会向您显示$("#Picture-text").val()为空。

您需要使用某种文件上传插件才能执行此操作。