码迷,mamicode.com
首页 > Web开发 > 详细

vue上传图片

时间:2020-02-23 23:51:14      阅读:114      评论:0      收藏:0      [点我收藏+]

标签:router   end   upload   after   有一个   expr   and   public   users   

vue上传图片,组件用element-ui上传组件

<el-upload
  class="avatar-uploader"
  action="https://jsonplaceholder.typicode.com/posts/"
  :show-file-list="false"
  :on-success="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>

其中:action 采用绑定的形式,表示上传的接口地址,api :配置跨域时的接口

:action = "/api/+‘upload‘"
axios.defaults.baseURL = ‘/api‘;

 on-success 上传成功之后。。。

 before-upload 上传之前。。。,比如验证,大小,尺寸

上传接口配置完成后,上传一张图片,可以看到有一个请求,查看请求地址,无问题

技术图片

 

 看到有一个数据Form Data,已经把图片转成了二进制数据,把数据传到服务器了,接下来写服务器

技术图片

 

 

// 获取上传文件,但 express 本身没有能力获取到上传文件的数据,因此要一个中间件专门用来获取上传文件 npm i multer
const express = require(‘express‘);
const path = require(‘path‘);

const multer= require(‘multer‘);
// 上传中间件,dest:目标地址  __dirname:当前文件所在文件夹,绝对地址,将来上传的图片二进制文件保存在此处
const upload = multer({dest:__dirname + ‘/../../Public/uploadAvatars‘});

// const user = require(‘../../models/Users/user‘);

const UploadAvatar = express.Router();

//file 就是前段上传图片的 Form Data
//  express 本身没有req.file,加了中间件,把数据赋值到req上,才有了req.file
UploadAvatar.post(‘/upload‘,upload.single(‘file‘),async (req,res) => {
    const file = req.file;
    res.send(file)
});

module.exports = UploadAvatar;

服务器写好,上传图片,可以看到有图片信息在里边,包括路径,大小,filename等

技术图片

 

 再看服务器,已经有一个图片二进制文件了,就是刚上传的图片

技术图片

 

 接下来,就是把这张图片以URL的形式返回给客户端

首先,存放在服务器的二进制文件要能被访问到,所有要开放出来

// 开放静态文件
app.use(‘/Pubilc‘,express.static(__dirname + ‘/Public‘));

然后在服务器端,还是上面的接口里,但这次多了一个自己拼出来的URL,通过URL客户端就可以访问到图片

UploadAvatar.post(‘/upload‘,upload.single(‘file‘),async (req,res) => {
    const file = req.file;
    file.url = `http://localhost:3000/uploads/${file.filename}`;
    res.send(file)
});

技术图片

 

 可以看到,数据里多了一个URL

前端,将URL赋值给 组件中的imageUrl

      afterUpload(res){
        this.imageUrl = res.url
      }

 

vue上传图片

标签:router   end   upload   after   有一个   expr   and   public   users   

原文地址:https://www.cnblogs.com/zhaohui-116/p/12354927.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!