1 头像的上传展示
首先,当用户上传头像之后,提交之前,会在页面进行展示头像,这一步是在前端操作完成的,因为没有提交,所以和后端没有关系,
用到的是 js中的文件阅读器对象,具体用法看下面代码
<div class="form-group">
<label for="myfile">上传头像
{% load static %}
<img src="{% static 'img/default.png' %}" id="myimg" alt="" width="80" style="margin-left:10px">
</label>
<input type="file" name="avatar" id="myfile" style="display:none">
</div>
// 此时,页面展示的是默认头像
··························
// 这里, 为(id=“myfile”) 绑定一个事件,当改变后就执行下列代码。
$('#myfile').change(function(){
//文件阅读器对象
// 1 先生成一个文件阅读器对象
let myFileReaderObj = new FileReader();
// 2 获取用户上传的头像文件
let fileObj =$(this)[0].files[0];
// 3 将文件对象交给阅读器对象读取
myFileReaderObj.readAsDataURL(fileObj) //异步操作,IO操作,不会等到文件阅读完毕,再走下一步
// 4 利用文件阅读器 将文件展示到前端页面 修改img的src属性, 将图片展示到前端。
//等待文件阅读器加载完毕后再执行
myFileReaderObj.onload=function (){
$('#myimg').attr('src',myFileReaderObj.result) //将图片文件读取出来放到src属性后面
}
})
2 头像文件如何传递到后端,交由后端保存?
由于头像是包含在form组件中的,既包含键值对又包含文件,所以需要用到FormData对象。打包键值对数据和