html代碼如下:
<div class="form-group">
<label for="exampleInputFile">附件上傳</label>
<input type="file" name="file" id="file_upload">
<button type="button" class="btn btn-default" onclick="FileUpload()">開始上傳附件</button>
</div>
jqeury代碼如下:
// 上傳附件到方法
function FileUpload() {
var form_data = new FormData();
var file_info = $('#file_upload')[0].files[0];
form_data.append('file',file_info);
//if(file_info==undefined)暫且不許要判斷是否有附件
//alert('你沒有選擇任何文件');
//return false
//}
// 提交ajax的請求
$.ajax({
url:"{% url 'post_apply_data' %}",
type:'POST',
data: form_data,
processData: false, // tell jquery not to process the data
contentType: false, // tell jquery not to set contentType
success: function(callback) {
console.log(order_id)
}
}); // end ajax
}
django-view代碼如下:
def handle_upload(request):
file_obj = request.FILES.get('file')
if file_obj: # 處理附件上傳到方法
request_set = {}
print('file--obj', file_obj)
#user_home_dir = "upload/%s" % (request.user.userprofile.id)
accessory_dir = settings.accessory_dir
if not os.path.isdir(accessory_dir):
os.mkdir(accessory_dir)
upload_file = "%s/%s" % (accessory_dir, file_obj.name)
recv_size = 0
with open(upload_file, 'wb') as new_file:
for chunk in file_obj.chunks():
new_file.write(chunk)
order_id = time.strftime("%Y%m%d%H%M%S",time.localtime())
cache.set(order_id,upload_file)
return HttpResponse(order_id)
至此,我們可以通過ajax正常上傳文件了。