掌握图片/文件上传
步骤

3. 提交表单数据到服务器, 得到图片URL地址
流程

示例
- <body>
- <!-- 文件选择元素 -->
- <input type="file" class="upload">
-
- <img src="" alt="" class="my-img">
-
- <script src="https://cdn.jsdelivr.net/npm/axios/dist/axios.min.js"></script>
- <script>
- /**
- * 目标:图片上传,显示到网页上
- * 1. 获取图片文件
- * 2. 使用 FormData 携带图片文件
- * 3. 提交到服务器,获取图片url网址使用
- */
- document.querySelector('.upload').addEventListener('change', function (e) {
- // 拿到文件对象(伪数组)
- const file = e.target.files[0]
- const fd = new FormData()
- fd.append('img', file)
- axios({
- url: 'http://hmajax.itheima.net/api/uploadimg',
- method: 'post',
- data: fd
- }).then(({ data }) => {
- const url = data.data.url
- document.querySelector('.my-img').src = url
- })
- })
- </script>
- </body>
- /**
- * 目标1:信息渲染
- * 1.1 获取用户的数据
- * 1.2 回显数据到标签上
- * */
- const render = () => {
- axios({
- url: 'http://hmajax.itheima.net/api/settings',
- params: {
- creator: '水壶'
- }
- }).then(({ data }) => {
- const result = data.data
- const keys = Object.keys(result)
- keys.forEach(key => {
-
- if (key === 'avatar') {
- // 单独处理头像
- document.querySelector('.prew').src = result[key]
- } else if (key === 'gender') {
- // 单独处理性别
- const genderEls = document.querySelectorAll('.gender')
- // 把属性值作为下标, 选中元素, 然后设置状态
- genderEls[result[key]].checked = true
-
- } else {
- // 处理其他表单项
- document.querySelector(`.user-form .${key}`).value = result[key]
- }
-
- })
-
- })
- }
-
- render()
- /**
- * 目标2:头像修改
- * 2.1 获取文件对象
- * 2.2 提交数据保存
- */
- document.querySelector('.upload').addEventListener('change', e => {
- console.log();
- const data = e.target.files[0]
- const fd = new FormData()
- fd.append('avatar', data)
- fd.append('creator', creator)
- axios({
- url: 'http://hmajax.itheima.net/api/avatar',
- method: 'put',
- data: fd,
- }).then(({ data }) => {
- document.querySelector('.prew').src = data.data.avatar
- })
- })