el-upload 上传文件和上传图片的基本用法
el-upload 上传excel
<template> <el-form :model="form"> <el-form-item label="上传文件" :label-width="formLabelWidth"> <el-upload ref="uploadExcel" action="https://jsonplaceholder.typicode.com/posts/" :limit=limitNum :auto-upload="false" accept=".xlsx" :before-upload="beforeUploadFile" :on-change="fileChange" :on-exceed="exceedFile" :on-success="handleSuccess" :on-error="handleError" :file-list="fileList"> <el-button size="small" plain>选择文件</el-button> <div slot="tip" class="el-upload__tip">只能上传xlsx(Excel2007)文件,且不超过10M</div> </el-upload> </el-form-item> <el-form-item> <el-button size="small" type="primary" @click="uploadFile">立即上传</el-button> <el-button size="small">取消</el-button> </el-form-item> </el-form> </template> <script> import axios from \'axios\' export default { data() { return { limitNum: 1, formLabelWidth: \'80px\', form: { file: \'\' }, fileList: [] } }, methods: { // 文件超出个数限制时的钩子 exceedFile(files, fileList) { this.$notify.warning({ title: \'警告\', message: `只能选择 ${this.limitNum} 个文件,当前共选择了 ${files.length + fileList.length} 个` }); }, // 文件状态改变时的钩子 fileChange(file, fileList) { console.log(\'change\') console.log(file) this.form.file = file.raw console.log(this.form.file) console.log(fileList) }, // 上传文件之前的钩子, 参数为上传的文件,若返回 false 或者返回 Promise 且被 reject,则停止上传 beforeUploadFile(file) { console.log(\'before upload\') console.log(file) let extension = file.name.substring(file.name.lastIndexOf(\'.\')+1) let size = file.size / 1024 / 1024 if(extension !== \'xlsx\') { this.$notify.warning({ title: \'警告\', message: `只能上传Excel2017(即后缀是.xlsx)的文件` }); } if(size > 10) { this.$notify.warning({ title: \'警告\', message: `文件大小不得超过10M` }); } }, // 文件上传成功时的钩子 handleSuccess(res, file, fileList) { this.$notify.success({ title: \'成功\', message: `文件上传成功` }); }, // 文件上传失败时的钩子 handleError(err, file, fileList) { this.$notify.error({ title: \'错误\', message: `文件上传失败` }); }, uploadFile() { this.$refs.uploadExcel.submit() /* let formData = new FormData() formData.append(\'file\', this.form.file) axios.post(\'https://jsonplaceholder.typicode.com/posts/\', formData, { "Content-Type": "multipart/form-data" } ) .then(res => { console.log(\'res\') console.log(res) }) .catch(err => { }) */ } } } </script> <style lang="scss" scoped> </style>
el-upload 上传图片
<template> <el-form :model="form"> <el-form-item label="上传图片" :label-width="formLabelWidth"> <el-upload ref="upload" action="#" accept="image/png,image/gif,image/jpg,image/jpeg" list-type="picture-card" :limit=limitNum :auto-upload="false" :on-exceed="handleExceed" :before-upload="handleBeforeUpload" :on-preview="handlePictureCardPreview" :on-remove="handleRemove"> <i class="el-icon-plus"></i> </el-upload> <el-dialog :visible.sync="dialogVisible"> <img width="100%" :src="dialogImageUrl" alt=""> </el-dialog> </el-form-item> <el-form-item> <el-button size="small" type="primary" @click="uploadFile">立即上传</el-button> <el-button size="small">取消</el-button> </el-form-item> </el-form> </template> <script> export default { data() { return{ dialogImageUrl: \'\', dialogVisible: false, formLabelWidth: \'80px\', limitNum: 3, form: {} } }, methods: { // 上传文件之前的钩子 handleBeforeUpload(file){ console.log(\'before\') if(!(file.type === \'image/png\' || file.type === \'image/gif\' || file.type === \'image/jpg\' || file.type === \'image/jpeg\')) { this.$notify.warning({ title: \'警告\', message: \'请上传格式为image/png, image/gif, image/jpg, image/jpeg的图片\' }) } let size = file.size / 1024 / 1024 / 2 if(size > 2) { this.$notify.warning({ title: \'警告\', message: \'图片大小必须小于2M\' }) } }, // 文件超出个数限制时的钩子 handleExceed(files, fileList) { }, // 文件列表移除文件时的钩子 handleRemove(file, fileList) { console.log(file, fileList); }, // 点击文件列表中已上传的文件时的钩子 handlePictureCardPreview(file) { this.dialogImageUrl = file.url; this.dialogVisible = true; }, uploadFile() { this.$refs.upload.submit() } } } </script> <style lang="scss" scoped> </style>
版权声明:本文为rogerwu原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。