form表单文件上传
路由
# from表单上传 path('formupload/',apply.formupload,name='formupload/'),
方法
# form表单文件上传 def formupload(request): if request.method == 'POST': image_obj = request.FILES.get('headimg') print(image_obj) with open(settings.MEDIA_ROOT+'/'+image_obj.name,'wb') as f: for lin in image_obj: f.write(lin) return HttpResponse('ok')
前端html
<form action="/apply/formupload/" method="post" enctype="multipart/form-data"> {% csrf_token %} <input type="file" name="headimg"> <input type="submit" value="form表单上传"> </form>
上传成功示例
#ajax上传
路由
# ajax上传文件 path('ajaxupload/',apply.ajaxupload,name='ajaxupload/'),
方法
# ajax文件上传 def ajaxupload(request): if request.method == 'POST': image_obj = request.FILES.get('headimg') print(image_obj) with open(settings.MEDIA_ROOT + '/' + image_obj.name, 'wb') as f: for lin in image_obj: f.write(lin) return HttpResponse('ok')
前端html
<form> {% csrf_token %} {# <div>用户名:<input type="text" name="username" id="username"></div>#} <div>选择文件:<input type="file" name="headimg" id="headimg"></div> <div><input id="dosubmit" type="button" name="dosubmit" value="ajax上传"></div> </form> {# ajax上传#} <script> $(document).ready(function () { $("#dosubmit").click(function () { var formdata = new FormData(); {# formdata.append("username", $("#username").val());#} formdata.append("headimg", $("#headimg")[0].files[0]); formdata.append("csrfmiddlewaretoken", "{{ csrf_token }}"); $.ajax({ url: "/apply/ajaxupload/", type: "post", data: formdata, contentType: false,//enctype="multipart/form-data" processData: false,//不需要转换数据类型,即不需要把传输的数据转为字符串 success: function (res) { console.log(res) } }); }); }) </script>
done。