2010-09-27 43 views
0

我需要更改以下代碼以將文件傳遞給django request.Files對象。目前我將文件位置傳遞給django,並允許它打開文件,不幸的是由於石頭網絡限制的新的荒謬設置,django將不再能夠訪問服務器之外的任何東西。使用jQuery.get將jQuery文件上傳到django request.FILES?

我傳遞的參數來自各種html文本輸入和文件選擇。

我很想改變很少,但如果沒有其他方式?

<script type='text/javascript'> 
$(document).ready(function() { 

jQuery.get(importUrl, 
{ 
    "file":fileInputData,"dir":dirInputData, 
    "year":thisSurvey,"import":thisImport, 
    "startDate":startDate,"endDate":endDate 
}, 

function(data) 
    { 
    jQuery.jGrowl(data,{sticky:true,header:"Import Result"}); 
    } 
); 
}); 
</script> 

回答

2

您不能上傳與阿賈克斯的文件,大約有腳本來做到這一點,但他們使用iframe提交(一個真正的表單提交裏面發生)的數據。請參閱How can I upload files asynchronously?

我真的不知道您的意思,「django將不再能夠訪問任何服務器之外的任何內容。」對文件上傳的限制是防止應用程序讀寫客戶端計算機上的文件。基本上所有上傳必須來自真實<input type="file" name="file">。要使用Django訪問上傳文件的數據,請使用request.FILES['name_of_the_file_input']。

+0

「django將不再能夠訪問其服務器之外的任何內容。」在公司網絡上,與Django無關,而是與我公司的新政策相關。 – danspants 2010-09-27 23:04:06

+0

iframe解決方案很好,但它需要對我的代碼進行根本性的更改,這非常刺激。我真的希望避免它。呃,好吧。 – danspants 2010-09-27 23:06:01