elementui 上传请求头_vue中element 的upload组件发送请求给后端操作

1.用到了before-upload属性,

用于在上传文件前的校验,并且发送请求给后端,传输格式进行文件流传输

什么都不用设置,action属性随便设置,不能为空即可!

在before-upload属性的方法中的代码如下:

var _this = this;

debugger;

// var files=file.target.files[0];

debugger;

const isJPG = file.type === "image/jpeg";

const isLt2M = file.size / 1024 / 1024 < 2;

if (!isJPG) {

this.$message.error("上传头像图片只能是 JPG 格式!");

}

if (!isLt2M) {

this.$message.error("上传头像图片大小不能超过 2MB!");

}

// return isJPG && isLt2M;

let formData = new FormData();

formData.append("file", file);

axios

.post("http://192.168.0.116:8083/pic/upload", formData)

.then(function(response) {

_this.enclosure.openPermitimgUrl = response.data;

// alert(response.data);

console.log(response);

})

.catch(function(error) {

alert("上传失败");

console.log(error);

});

补充知识:vue element 实现上传导入功能(请求到后台接口)

1、主要用到了element中upload的onSuccess方法

action后面跟着的是上传文件后要被导入的接口

data是我们可能上传多个 定义一个数组

2、在data中定义 uploadBase:{}

3、请求后台的导入接口 传给后台所需要的参数

以上这篇vue中element 的upload组件发送请求给后端操作就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持脚本之家。

1. 安装element-ui和axios ``` npm install element-ui axios ``` 2. 在main.js引入element-ui和axios ```javascript import Vue from 'vue' import ElementUI from 'element-ui' import 'element-ui/lib/theme-chalk/index.css' import axios from 'axios' Vue.use(ElementUI) Vue.prototype.$axios = axios ``` 3. 在组件使用el-upload组件 ```html <template> <div> <el-upload class="upload-demo" action="/api/upload" :on-success="handleSuccess" :before-upload="beforeUpload" :headers="{Authorization: token}"> <el-button size="small" type="primary">点击上传</el-button> <div slot="tip" class="el-upload__tip">只能上传jpg/png文件,且不超过500kb</div> </el-upload> </div> </template> ``` 其,action是上传的接口地址,on-success是上传成功后的回调函数,before-upload上传前的钩子函数,headers是请求头部,可以传递token等信息。 4. 在methods定义handleSuccess和beforeUpload函数 ```javascript methods: { handleSuccess(response, file, fileList) { console.log(response) // 在这里处理上传成功后的响应数据 }, beforeUpload(file) { const isJPG = file.type === 'image/jpeg' || file.type === 'image/png' const isLt500K = file.size / 1024 < 500 if (!isJPG) { this.$message.error('上传图片只能是 JPG/PNG 格式!') } if (!isLt500K) { this.$message.error('上传图片大小不能超过 500KB!') } return isJPG && isLt500K } } ``` 在beforeUpload函数,可以对上传的图片进行格式、大小等限制。 5. 在后端接口处理上传的图片 在后端接口,可以使用express框架的multer间件来处理上传的图片。安装multer: ``` npm install multer ``` 在express引入multer,并设置上传的文件夹: ```javascript const express = require('express') const multer = require('multer') const app = express() const storage = multer.diskStorage({ destination: function (req, file, cb) { cb(null, 'uploads/') }, filename: function (req, file, cb) { cb(null, file.fieldname + '-' + Date.now() + '.jpg') } }) const upload = multer({ storage: storage }) app.post('/api/upload', upload.single('file'), (req, res) => { console.log(req.file) // 在这里处理上传成功后的响应数据 }) ``` 在这里,上传的文件会被保存到uploads文件夹下,文件名会以字段名和时间戳命名。 注意:在使用express间件处理上传文件时,需要使用body-parser间件。安装body-parser: ``` npm install body-parser ``` 在express引入body-parser: ```javascript const bodyParser = require('body-parser') app.use(bodyParser.urlencoded({ extended: false })) app.use(bodyParser.json()) ``` 完整代码如下: ```javascript const express = require('express') const multer = require('multer') const bodyParser = require('body-parser') const app = express() const storage = multer.diskStorage({ destination: function (req, file, cb) { cb(null, 'uploads/') }, filename: function (req, file, cb) { cb(null, file.fieldname + '-' + Date.now() + '.jpg') } }) const upload = multer({ storage: storage }) app.use(bodyParser.urlencoded({ extended: false })) app.use(bodyParser.json()) app.post('/api/upload', upload.single('file'), (req, res) => { console.log(req.file) // 在这里处理上传成功后的响应数据 }) app.listen(3000, () => console.log('Server is running...')) ``` 注意:在使用element-ui的上传组件时,需要设置上传的文件类型和大小限制,但是这只是客户端的限制,如果后端没有做相应的处理,仍然可以上传非指定类型和大小的文件,因此,在后端接口也需要对上传的文件进行相应的限制。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值