element-ui官网
element ui=>upload上传组件
Upload 上传文件这个功能是我们在企业实际开发当中使用频率是非常高的这样一个文件上传的功能,,element ui组件组也给我们提供了上传的组件。所有我们一定要熟悉掌握它
打开终端=>输入npm i element-ui -S
npm i element-ui -S
就拿其中的一个拖拽上传一个例子进行说说吧
<el-upload
class="upload-demo"
drag
action="https://jsonplaceholder.typicode.com/posts/"
multiple>
<i class="el-icon-upload">i>
<div class="el-upload__text">将文件拖到此处,或<em>点击上传em>div>
<div class="el-upload__tip" slot="tip">只能上传jpg/png文件,且不超过500kbdiv>
el-upload>
1.先搭建一个vue项目
vue项目搭建可以参考这篇文章
2.使用element-ui和创建vue组件
配置element-ui
main.js
import Vue from 'vue'
import App from './App.vue'
import './registerServiceWorker'
import router from './router'
import store from './store'
// 引入element ui
import ElementUI from 'element-ui';
import 'element-ui/lib/theme-chalk/index.css';
Vue.config.productionTip = false
Vue.use(ElementUI);
new Vue({
el: '#app',
router,
store,
render: h => h(App)
})
创建一个组件,用于放el-upload
upload.vue,首先先把element的组件放进来,接下来再进行更改配置
<template>
<div>
<el-upload class="upload-demo" drag action="https://jsonplaceholder.typicode.com/posts/" multiple>
<i class="el-icon-upload">i>
<div class="el-upload__text">将文件拖到此处,或<em>点击上传em>div>
<div class="el-upload__tip" slot="tip">只能上传jpg/png文件,且不超过500kbdiv>
el-upload>
div>
template>
<script>
export default {
data() {
return {
}
}
}
script>
<style scoped>style>
展示upload组件,为了方便我就不配置路由了,直接在App.vue引入展示
App.vue
<template>
<div id="app">
<uploadView/>
div>
template>
<script>
// 引入创建的upload.vue组件
import uploadView from './views/upload.vue'
export default{
components:{
uploadView
}
}
script>
<style scope>
style>
使用el-upload组件完成,action 是后端地址,是后端请求的接口地址。
常用参数:
<template>
<div>
<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>
div>
template>
<script>
export default {
data() {
return {
imageUrl: ''
// 接受我们上传图片的地址,上传成功以后给的地址
};
},
methods: {
// 上传成功的回调
handleAvatarSuccess(res, file) {
//demo 转换成url,后期可以换成后端给我们返回的地址
this.imageUrl = URL.createObjectURL(file.raw);
// 转化可以显示页面的地址,其实正常开发中已经可以拿到后端返回的地址,可以直接使用的
},
// 上传之前的回调
beforeAvatarUpload(file) {
// isJPG图片格式是否符合我们的规定
const isJPG = file.type === 'image/jpeg';
// isLt2M 文件大小是否符合我们的规定
const isLt2M = file.size / 1024 / 1024 < 2;
if (!isJPG) {
this.$message.error('上传头像图片只能是 JPG 格式!');
}
if (!isLt2M) {
this.$message.error('上传头像图片大小不能超过 2MB!');
}
return isJPG && isLt2M;
}
}
}
script>
<style scoped>
/* 图片上传样式 */
.avatar-uploader .el-upload {
border: 1px dashed #d9d9d9;
border-radius: 6px;
cursor: pointer;
position: relative;
overflow: hidden;
}
.avatar-uploader .el-upload:hover {
border-color: #409EFF;
}
.avatar-uploader-icon {
font-size: 28px;
color: #8c939d;
width: 178px;
height: 178px;
line-height: 178px;
text-align: center;
}
.avatar {
width: 178px;
height: 178px;
display: block;
}
style>
把App.vue展示的组件替换为我们的imgUpload组件
<template>
<div id="app">
<imgUpload/>
div>
template>
<script>
// 引入创建的upload.vue组件
// 文件上传
import uploadView from './views/upload.vue'
// 图片上传
import imgUpload from './views/imgUpload.vue'
export default{
components:{
uploadView,
imgUpload
}
}
script>
<style>
style>
handlepreview (file)
handleremove (file,filelist)
更多的查看官网即可
globObj.$axios({
url: url,
method: 'post',
transformRequest: [function(data, headers) {
// 去除post请求默认的Content-Type
delete headers['Content-Type']
return data
}],
data: formData,
timeout: 300000
}).then(res => {
ElMessage.success('资产添加成功');
}).catch((err) => {
console.log(err);
});
如果还要传其他的参数,其他的参数必须也要append进去,否则可能会报参数错误。
const formData = new FormData();
formData.append('file', file);
// 其他参数
formData.append('mailSys', mailSys);
如果这篇【文章】有帮助到你,希望可以给我点个赞,创作不易,如果有对前端端或者对python感兴趣的朋友,请多多关注,咱们一起探讨和努力!!!
个人主页 : 前端初见