• 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的用法
  • 相关阅读:
    第15周作业
    迟到的第14周作业
    第13周作业集
    第11次作业--字符串处理
    找回感觉的练习
    第9次作业--接口及接口回调
    20194684 + 自动生成四则运算题第一版报告
    css的calc在less文件中计算有误问题
    react 细节整理
    js async属性
  • 原文地址:https://www.cnblogs.com/cylblogs/p/7117745.html
Copyright © 2020-2023  润新知