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的用法


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM