vuejs el-upload 支持拖拽 多文件上传
<template>
<div>
<el-upload multiple class="upload-demo" name='uploadfile' ref="upload" drag accept="application/vnd.ms-excel,application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"
:action='uploadUrl()' :file-list="uploadList" :auto-upload="false">
<i class="el-icon-upload"></i>
<div class="el-upload__text">将文件拖到此处,或<em>点击上传</em></div>
<div class="el-upload__tip" slot="tip">只能上传excel文件,且不超过10m</div>
</el-upload>
<el-button @click="upload" type="primary" id='btnUpload'>upload</el-button>
<el-button @click="onClickCancelHandler" type="primary">cancel</el-button>
</div>
</template>
<script>
import {
RES
} from '../data/staticVal.js'
import {
mapGetters
} from 'vuex'
var uploadFiles = {
name: "uploadFiles",
computed: {
...mapGetters({
username: 'name'
})
},
data: function () {
return {
uploadFile: null,
uploadFilename: '',
fileList: [],
uploadList: [],
excelList: [],
visible: true,
noFile: true
}
},
methods: {
mounted() {
},
upload() {
this.fileList = this.$refs.upload.uploadFiles;
if (this.fileList.length > 0) {
this.$refs.upload.submit();
console.log(this.fileList);
this.$emit('closeUploadDailog');
} else {
this.$message({
message: 'no file import',
type: 'info'
});
return false;
}
}
}
}
export default uploadFiles;
</script>
<style>
#btnUpload {
margin: 10px
}
</style>
let multer = require('multer');
let co = require('co');
let fs = require('fs');
let xlsx = require('xlsx');
let storage = multer.diskStorage({
destination: function (req, file, cb) {cb(null, './uploads');},
filename: function (req, file, cb) { const fileName = Date.now() + '$' + file.originalname; currentFile.push(fileName); cb(null, fileName); } }); let upload = multer({ storage: storage, limits: { fieldSize: '10M' } }); exports.storageFile = function (req, res, next) { s = upload.single('uploadfile'); s(req, res, err => { if (err) { return console.log(err); } next(); }) } exports.insertFileInfoDB = function (req, res) { co(function* () { try { let fileName = req.file.filename; let originalname = req.file.originalname; let path = req.file.destination + '/' + fileName; } catch (error) { res.send({ result: RES.FAIL, message: error }); } }) }
前台和后台的代码(上面)
router.post('/api/uploadFiles', uploadMonitoring_api.storageFile, uploadMonitoring_api.insertFileInfoDB) //action 里面的接口
注意:
exports.storageFile = function (req, res, next) {
s = upload.single('uploadfile');
s(req, res, err => {
if (err) {
return console.log(err);
}
next();
})
} //uploadfile 要和前台的el-uplaod 里面的name相同 multer的用法

浙公网安备 33010602011771号