我需要更改以下代码以将文件传递给django request.Files对象。目前我将文件位置传递给django并允许它打开文件,遗憾的是由于新的荒谬的网络限制,django将无法访问其服务器之外的任何内容。
我传递的参数来自各种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>
答案 0 :(得分:2)
您无法使用Ajax上传文件,有脚本可以执行此操作,但他们使用iframe提交数据(在其中发生真实的表单提交)。见How can I upload files asynchronously?
我真的不知道你的意思是“django将无法访问它的服务器以外的任何东西。”对文件上载的限制是使应用程序不会将文件读写到客户端的计算机上。基本上所有上传都必须来自真实的<input type="file" name="file">
。要在Django中访问上传文件的数据,请使用request.FILES['name_of_the_file_input'
]。