2013-11-28 81 views
0

我有一個簡單的形式index.htmlrequest.FILES是空的時候發送AJAX文件上傳請求到服務器

<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 
    # ... 

我做錯了什麼?

+0

我改正這個謝謝。 – mojibuntu

回答

1

您無法在Ajax中上傳這樣的文件 - 調試日誌會告訴您$("#Picture-text").val()爲空。

你將需要使用某種文件上傳插件來做到這一點。

+0

更具體的將在這裏有所幫助。如果需要另一個插件,請詳細解釋一下爲什麼?我覺得這應該是可能的。這些插件做得如何特別? – jordancooperman

+0

我使用瀏覽器的原生FileReader api來獲取數據,我可以很清楚地看到這些數據,但是當我將它發送到服務器時,request.FILES仍然是空的。 – jordancooperman

相關問題