Elementui+iView将图片上传到express服务器

前段代码

Elementui代码

<div id="elemenui_upload">
  <el-upload
    action="/localServer/users/upload"
    ref="upload"
    :auto-upload="false"
    multiple
    :limit="5"
    :on-success="successUp"
  >
    <el-button slot="trigger" size="small" type="primary">
        选择图片
    </el-button>
    <el-button size="small" type="success" @click="Onsubmit">
        上传至服务器
    </el-button>
    <div slot="tip" class="el-upload__tip">
      jpg/png files with a size less than 500kb
    </div>
  </el-upload>
</div>

<el-upload>标签中的action属性设置为expres服务器路由的地址,ref设置为upload,on-success为文件上传成功事件,触发事件,执行successUp函数

第二个<el-button>即为提交按钮,点击执行Onsubmit函数

iView代码

<div id="ivew_upload">
  <Upload action="/localServer/users/upload" :on-success="successUp">
    <Button icon="ios-cloud-upload-outline">上传图片</Button>
  </Upload>
</div>

iView的代码比较简洁,上传图片的按钮点击时,会自动执行submit,不用我们另外设置函数。

iView触发on-success事件所执行的函数与Elementui的一致

上述代码的方法声明

export default {
  methods: {
    Onsubmit() {
      this.$refs.upload.submit();
    },
    successUp(response, file, fileList) {
      console.log("通过127.0.0.1:7882\\" + response.file.path + "查看图片");
    },
  },
};

this.$refs.upload.submit();表示找到ref为upload的组件,执行submit函数,即可将图片上传至服务器

successUp函数有三个参数,response为服务器返回的响应,file为当前的文件对象,fileList为当前文件列表

demo3.png

上图为response返回的数据。path表示图片存在服务器的位置,originalname表示在上传前图片在主机的原始名字

后端代码

const express = require('express');
const router = express.Router();
const multer = require("multer");
const fs = require('fs');
const path = require('path');
var upload = multer({
  storage: multer.diskStorage({
    //设置文件存储位置
    destination: function (req, file, cb) {
      let date = new Date();
      let year = date.getFullYear();
      let month = (date.getMonth() + 1).toString().padStart(2, '0');
      let day = date.getDate().toString().padStart(2, '0');
      let dir = "./uploads/" + year + month + day;

      //判断目录是否存在,没有则创建
      if (!fs.existsSync(dir)) {
        fs.mkdirSync(dir, {
          recursive: true
        });
      }

      //dir就是上传服务器成功的图片的存放的目录
      cb(null, dir);
    },
    //设置文件名称
    filename: function (req, file, cb) {
      let fileName = Date.now() + path.extname(file.originalname);
      //fileName就是上传文件的文件名
      cb(null, fileName);
    }
  })
});
router.post('/upload', upload.single('file'), (req, res) => {
  console.log(req.file);
  res.json({
    file: req.file
  })
})
module.exports = router;

需要使用到multer模块,没有的需要自行下载npm install multer -s

图片上传至服务器成功,会在src目录下创建一个文件夹uploads,该文件夹下面还会创建子文件夹,名称为图片上传成功时的年月日

res.jsonres.send的作用基本一致,只是res.json返回的格式为json

注意

后端设置文件名称时,最好不要用其他字符,以免通过静态访问失败;

后端设置路由时也不要设置其他字符,_下划线也不要设置;

前端配置代理时vue.config.js,自定义的代理名称也最好不要带有其他字符,尽量使用驼峰命名法。

通过express静态访问图片

在app.js文件中写入app.use('/uploads', express.static('uploads')),即可在浏览器中通过访问127.0.0.1:express的端口/uploads/图片上传年月日/图片名称,查看图片

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,293评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,604评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,958评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,729评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,719评论 5 366
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,630评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,000评论 3 397
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,665评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,909评论 1 299
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,646评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,726评论 1 330
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,400评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,986评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,959评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,197评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 44,996评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,481评论 2 342

推荐阅读更多精彩内容