vue 移动端上传头像

头像上传主要的难点在于后端的操作。接下来我会从最开始一步步实现。

我用的是vant组件 其实感觉移动端的话vant组件还是非常好用的Vant 2 - Mobile UI Components built on Vue

这里使用的是Vant 2的Uploader 文件上传

首先在页面中使用该组件





 当我们随便上传一张图片之后就会出来一个file对象

vue 移动端上传头像_第1张图片

 这样就能获取到图片的一些信息 比如:图片大小 图片格式 ........

回到页面开始写发送请求 这里注意要写一个name字段





 注意发送请求的路径,这个路径是直接向后台服务器发送的请求。到了这个时候前台代码基本完成了

开始后端代码 

​​​​​​// 配置multer中间件
const multer = require('multer');
obj = multer.diskStorage({
  //设置上传后文件路径,upload文件夹会自动创建
  destination: function (req, file, cb) {
    //指定目录
    //cb ---> callback
    cb(null, 'upload');
  }, 
   //给上传文件重命名
  filename: function (req, file, cb) {
    // 指定文件名
    let name = file.originalname;
    // name:  abcd.jpg    xxxdfdd.zip
    let ext = name.substr(name.lastIndexOf('.'));
    cb(null, uuid.v4() + ext);
  },
});
const uploadTools = multer({
  storage: obj,
});
const uuid = require('uuid');
// 静态资源托管目录
poetry.use(express.static('upload'));

 注意这里使用的一些中间件什么都需要下载 

直接 npm install multer   npm install uuid 下载完了在你的packge.json中查看

让后重要的一步来了,我们要提前在我们的后端中增加一个文件夹用来保存上传的图片也就是你的静态资源托管目录upload

vue 移动端上传头像_第2张图片

 到了这一步就开始写接口

​​poetry.post('/upload',
  uploadTools.array('uploadFile'),(req,res)=>{
    console.log(req.files);
    // 这里创建一个空数组
    let urls = []
    // 循环拿到的路径
    req.files.forEach(item=>{
      console.log(item.filename);
      urls.push('http://localhost:3000/'+item.filename)
    })
    // 把路径返回
    res.send(urls)
  }),
// 指定服务器对象监听的端口号
poetry.listen(3000, () => {
  console.log('is run....');
});

 回到前台,这样就拿到的后台返回给你的图片路径 之后就可以渲染到页面上了

vue 移动端上传头像_第3张图片

​​



 vue 移动端上传头像_第4张图片

 vue 移动端上传头像_第5张图片

 这样图片上传就完成了。

你可能感兴趣的:(vue.js,前端,javascript)