django ajax傳文件並保存至數據庫

Model

class Order(models.Model):
    drawing = models.FileField(null=False, upload_to='drawing/%Y/%m/%d')

表單

<form>
   <input type="file" id="a">
</form>
<script>
   let files = $('#a').filebox('files');
   let fd = new FormData();
   fd.append('order_id',{{order_id}})
   fd.append('file', files[0]);
   fd.append('csrfmiddlewaretoken', '{{ csrf_token }}');// post 提交的時候 django 會啓動 csrf 驗證
   $.ajax({
       url: '{% url 'order_detail' %}',
       type: 'post',
       data: fd,
       processData: false,  // 告訴jQuery不要去處理髮送的數據
       contentType: false,   // 告訴jQuery不要去設置Content-Type請求頭
       success: function () {
           alert('ok')
       }
   })
</script>

後臺處理

from django.core.files import File
from django.http import JsonResponse

def order_detail(request):
   drawing = request.FILES.get('file')
   order_id = request.POST['order_id']
   if drawing:
   	Order.objects.get(pk=order_id).drawing.save(name=drawing.name,content=File(drawing))
   	return JsonResponse({})
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章