花了好几天时间终于解决了这个可能在别人看来十分简单的问题,毕竟第一次上手后台,很多东西还是不懂得,加油!先来一个参考链接:
https://www.cnblogs.com/thingk/archive/2013/11/25/3434032.html
首先是注册页面的图片上传
用的是element的上传组件,action参数是图片上传的地址,本身是想和其他用户注册时的其他参数一齐上传,但是这是有问题的,图片上传应该是需要一个特殊的接口,将图片保存到服务器,然后将这个图片的地址保存到数据库中,每次需要时通过数据库的地址查找对应的图片,代码如下:
前端代码:1
2
3
4
5
6
7
8
9
10
11
12 <el-upload
ref="upload"
class="avatar-uploader"
action="http://localhost:8080/api/signup/image"
name="avatar"
:show-file-list="false"
:auto-upload="false"
:on-change="handleAvatarSuccess"
:before-upload="beforeAvatarUpload">
<img v-if="imageUrl" :src="imageUrl" class="avatar">
<i v-else class="el-icon-plus avatar-uploader-icon"></i>
</el-upload>
关于imgUrl:
1 | handleAvatarSuccess (res, file) { |
需要在注册提交事件中触发:
1 | vm.$refs['upload'].submit() |
后台代码:
1 | // 先把图片存储起来 |
在后台的index.js文件下添加中间件:
1 | // 处理表单及文件上传的中间件 |
第二部分是部分需要显示图片的页面
前端代码:
在登录时将imgUrl地址存起来,以方便后面页面请求需要:
1 | localStorage.set('imgUrl', res.data.imgUrl, res.data.expTime) |
需要获取图片的页面:1
<img :src="imgSrc" alt="">
图片src设置为请求的接口:1
2
3created() {
this.imgSrc = `/api/image/${localStorage.get('imgUrl')}`
}
后台代码:
添加路由:
1 | module.exports = function (app) { |