### ajax發送文件
```python
"""
ajax發送文件需要借助於js內置對象FormData
"""
<script>
// 點擊按鈕朝后端發送普通鍵值對和文件數據
$('#d4').on('click',function () {
// 1 需要先利用FormData內置對象
let formDateObj = new FormData();
// 2 添加普通的鍵值對
formDateObj.append('username',$('#d1').val());
formDateObj.append('password',$('#d2').val());
// 3 添加文件對象
formDateObj.append('myfile',$('#d3')[0].files[0])
// 4 將對象基於ajax發送給后端
$.ajax({
url:'',
type:'post',
data:formDateObj, // 直接將對象放在data后面即可
// ajax發送文件必須要指定的兩個參數
contentType:false, // 不需使用任何編碼 django后端能夠自動識別formdata對象
processData:false, // 告訴你的瀏覽器不要對你的數據進行任何處理
success:function (args) {
}
})
})
</script>
def ab_file(request):
if request.is_ajax():
if request.method == 'POST':
print(request.POST)
print(request.FILES)
return render(request,'ab_file.html')
"""
總結:
1.需要利用內置對象FormData
// 2 添加普通的鍵值對
formDateObj.append('username',$('#d1').val());
formDateObj.append('password',$('#d2').val());
// 3 添加文件對象
formDateObj.append('myfile',$('#d3')[0].files[0])
2.需要指定兩個關鍵性的參數
contentType:false, // 不需使用任何編碼 django后端能夠自動識別formdata對象
processData:false, // 告訴你的瀏覽器不要對你的數據進行任何處理
3.django后端能夠直接識別到formdata對象並且能夠將內部的普通鍵值自動解析並封裝到request.POST中 文件數據自動解析並封裝到request.FILES中
"""