说明

element-ui的Upload组件可以帮助我们上传我们的图片到我们的服务器,可以使用action参数上传图片,也可以使用http-request自定义上传方式。这里我们使用自定义的方式上传。

前端代码

我们只是自定义了一个 upload方法,里面进行发送我们的请求,使用了FormData对象,它将数据编译成键值对,其主要用于发送表单数据。

<template>
<div id="app">
<h3>头像上传</h3>
<el-upload
class="avatar-uploader"
action="http://localhost:3003/upLoad"
:show-file-list="false"
:http-request="upload"
>
<img v-if="imageUrl" :src="imageUrl" class="avatar">
<i v-else class="el-icon-plus avatar-uploader-icon"></i>
</el-upload>
</div>
</template>
<script>
methods:{
upload(f){ let formData = new FormData()
formData.append('file', f.file) axios({
method: 'post',
url: 'http://localhost:3003/upLoad',
data:formData
}).then(res =>{
//上传成功之后 显示图片
this.imageUrl = res.data.url
})
}
}
</script>

后台代码

  • node + express

//app文件
const express = require('express')
const app = express() //解决跨域
app.all('*',function (req, res, next) {
res.header('Access-Control-Allow-Origin', '*');
res.header('Access-Control-Allow-Headers', 'Content-Type, Content-Length, Authorization, Accept, X-Requested-With');
res.header('Access-Control-Allow-Methods', 'PUT, POST, GET, DELETE, OPTIONS');
if (req.method == 'OPTIONS') {
res.send(200);
}else {
next();
}
}); //引入router.js路由文件
const router = require('./router/router.js') //暴漏静态资源文件 暴漏之后我们可以通过域名访问该文件下的资源
app.use(express.static('upload')) app.use(router) app.listen(3003, function(){
console.log('已经创建好服务器,可以连接了...')
})
  • router文件

    这里使用了multer中文文档中间件,处理我们上传的图片,storage配置了图片的存储路径,以及文件名和后缀名。在路由 upLoad中使用 upload.single('file') 获得我们存储的信息,这里的fileFormData的 键 一致。之后返回服务器存储图片的地址返回给客户端即可。

 //router.js文件
const express = require('express')
const router = express.Router()
const multer = require('multer') //上传的文件保存在 upload
const storage = multer.diskStorage({
//存储的位置
destination(req, file, cb){
cb(null, 'upload/')
},
//文件名字的确定 multer默认帮我们取一个没有扩展名的文件名,因此需要我们自己定义
filename(req, file, cb){
cb(null, Date.now() + file.originalname)
}
}) //传入storage 除了这个参数我们还可以传入dest等参数
const upload = multer({storage})
router.post('/upLoad', upload.single('file'), (req, res) =>{ //给客户端返回图片的访问地址 域名 + 文件名字
//因为在 app.js文件里面我们已经向外暴漏了存储图片的文件夹 uploa
const url = 'http://localhost:3003/' + req.file.filename
res.json({url})
})

node + multer存储element-ui上传的图片的更多相关文章

  1. element ui 上传文件,读取内容乱码解决

    element ui 上传文件,读取内容乱码解决: 加第二个参数 reader.readAsText(file.raw,'gb2312'); <el-upload class="upl ...

  2. Element ui 上传文件组件(单文件上传) 点击提交 没反应

    element ui 第一次上传文件后 上传其他文件再次点击不再次提交 需要使用 clearFiles 清空已上传文件列表 这时候在次点击 上传按钮 就会惊喜的发现 可以上传了使用方法 this.$r ...

  3. element UI 上传文件成功后 - 清空文件

    request({ url: '/jiekou', method: 'post', data }).then(res => { this.$message({ type: 'success', ...

  4. vue element ui 上传 请求接口

    在页面上 http-request: 覆盖默认的上传行为,可以自定义上传的实现 <el-upload  class="avatar-uploader"  action=&qu ...

  5. node应用通过multer模块实现文件上传

    multer用于处理文件上传的nodejs中间件,主要跟express框架搭配使用,只支持表单MIME编码为multipart/form-data类型的数据请求. 如果要处理其他编码的表单数据可以通过 ...

  6. nodejs-使用multer实现多张图片上传,express搭建脚手架

    nodejs-使用multer实现多张图片上传,express搭建脚手架 在工作中,我们经常会看到用户有多张图片上传,并且预览展示的需求.那么在具体实现中又该怎么做呢? 本实例需要nodejs基础,本 ...

  7. SpringBoot 整合文件上传 elment Ui 上传组件

    SpringBoot 整合文件上传 elment Ui 上传组件 本文章记录 自己学习使用 侵权必删! 前端代码 博主最近在学 elment Ui 所以 前端使用 elmentUi 的 upload ...

  8. vue中element 的上传功能

    element 的上传功能 最近有个需求,需要在上传文件前,可以进行弹窗控制是否上传upload 看完文档后,感觉有两种思路可以实现 基于before-upload :上传文件之前的钩子,参数为上传的 ...

  9. selenium -文件上传的实现 -对于含有input element的上传

    使用selenium做自动化时,我们经常会遇到的一个让人头疼的问题就是文件上传. 问题的难点在于selenium无法识别并操作Windows窗口,若我们可以绕过弹出框直接把文件信息上传给选择按钮,难点 ...

随机推荐

  1. $HDU$ 4352 ${XHXJ}'s LIS$ 数位$dp$

    正解:数位$dp$+状压$dp$ 解题报告: 传送门! 题意大概就是港,给定$[l,r]$,求区间内满足$LIS$长度为$k$的数的数量,其中$LIS$的定义并不要求连续$QwQ$ 思路还算有新意辣$ ...

  2. linux mysql 5.7.20 部署脚本+备份脚本

    一.官网下载源码包 源码包:mysql-5.7.20-linux-glibc2.12-x86_64.tar.gz 检查环境,卸载老版本mysql 二.自动部署脚本 进入文件目录,执行脚本 #!/bin ...

  3. 1094 谷歌的招聘 (20 分)C语言

    2004 年 7 月,谷歌在硅谷的 101 号公路边竖立了一块巨大的广告牌(如下图)用于招聘.内容超级简单,就是一个以 .com 结尾的网址,而前面的网址是一个 10 位素数,这个素数是自然常数 e ...

  4. 1091 N-自守数 (15 分)C语言

    如果某个数 K 的平方乘以 N 以后,结果的末尾几位数等于 K,那么就称这个数为"N-自守数".例如 3×92^​2​​ =25392,而 25392 的末尾两位正好是 92,所以 ...

  5. 使用tushare 库查阅交易日历

    资料参考:https://tushare.pro/ 交易日历 接口:trade_cal描述:获取各大交易所交易日历数据,默认提取的是上交所 tushare的版本和更新: 执行命令: pip insta ...

  6. MinIO 搭建使用

    MinIO简介¶ MinIO 是一款基于Go语言的高性能对象存储服务,在Github上已有19K+Star.它采用了Apache License v2.0开源协议,非常适合于存储大容量非结构化的数据, ...

  7. Django之models字段属性

    目录 常用字段 AutoField IntegerField CharField 自定义及使用char DateField DateTimeField 字段合集 字段参数 null unique db ...

  8. CAS的实现原理

    CAS的全称是CompareAndSwap,比较并交换,是Java保证原子性的一种重要方法,也是一种乐观锁的实现方式. 它需要先提前一步获取旧值,然后进入此方法比较当下的值是否与旧值相同,如果相同,则 ...

  9. PHP实现取得HTTP请求的原文【转】

    本文实例讲述了PHP实现取得HTTP请求的原文的方法,具体步骤如下: 1. 取得请求行:Method.URI.协议 可以从超级变量$_SERVER中获得,三个变量的值如下: $_SERVER['REQ ...

  10. [apue] 作为 daemon, 启动 Unix Domain Socket 侦听失败?

    前段时间写一个传递文件句柄的小 demo,有 server 端.有 client 端,之间通过 Unix Domain Socket 通讯. 在普通模式下,双方可以正常建立连接,当server端作为d ...