zoukankan      html  css  js  c++  java
  • iview upload组件的运用

    写文件上传时,在网上看过很多关于upload组件文章,今天我就总结下自己运用upload组件的心得。

    最有力的说明就是代码了,上代码

    1.运用iview upload组件上传文件(带token,带参数)

    1.1. 前端vue代码

    1.组件
    <div style="align-items:center;display:flex;justify-content:flex-start;">   <Upload action="/myblog/mycontroller/mymethod"   :headers="{'Authorization':token}"   :data="fileData"   :before-upload="onBefore" style="margin-left: 5px;">   <Button icon="ios-cloud-upload-outline"style="margin-top: 8px;" type="primary" size="large" >导入</Button>   <!--<span v-if="file !== null" style="color:green;">{{ file.name }}</span>-->   </Upload> </div>

    2.变量

    data () {
      return {
        file:null,
        fileData:{'groupName':'default'},
         token:'Bearer' + Cookies.get('token'),
    }

    3.函数

    onBefore(file){
      let exceededNum=file.name.lastIndexOf(".");
      let exceededStr=file.name.substring(exceededNum+1,file.name.length).trim();
      if(exceededStr!="csv"){
        this.$Notice.warning({
          title: '文件格式错误',
          desc: file.name + '文件格式不正确, 请选择 csv'
        });
        return false;
      }
      if(file.size>(102400*20)){
        this.$Notice.warning({
          title: '文件大小错误',
          desc: file.name + '文件大小太大,超过2M'
        });
        return false;
      }
      this.file=file;
      return true;
    },


    4.监听变量(更新参数值)

    watch: {//与生命钩子(created函数)同级 
      groupName: {
        handler: function(groupName) {
        this.fileData={'groupName':groupName}
        },
        deep: true
      }
    }

    1.2. 后端java代码(在网上找了许久都没找到,无奈中尝试出来了)

        @RequestMapping(value = "/uploadAccountFile", method = RequestMethod.POST)
        @ResponseBody
        public String uploadAccountFile(@RequestParam MultipartFile file,@RequestParam String groupName) {//不需要参数可去掉 @RequestParam String groupName
          //也可换成 HttpServletRequest  request, HttpServletResponse response String result
    = null; try { InputStream is = file.getInputStream(); BufferedReader reader = new BufferedReader(new InputStreamReader(is)); reader.readLine(); String line = null; while((line=reader.readLine())!=null){ } result = "绝世神功九阳真经终于练成,天上地下任我逍遥,哈哈哈"; } catch (Exception ex) { result = "无可奈何走火入魔,来世再见"; } return result; }

    2. 运用iview upload组件手动上传文件

    2.1. 前端vue代码

    1. 组件
    <div style="align-items:center;display:flex;justify-content:flex-start;">
        <Upload style="80%;" 
        :action="url" 
        :before-upload="onBefore">
        <Button icon="md-cloud-upload">点击上传</Button>
        <span v-if="file !== null" style="color:green;">{{ file.name }}</span>
        </Upload>
    </div>

    2.变量

    data() {
      return {
        url: '',
        file: null,
        name: '',
        note: ''
      }
    }

     3.函数

     onBefore(file) {
      this.file = file;
      return false;
     },

     doupload() {
      this.$store.dispatch({
        type: 'doupload',
        'name': this.name,
        'note': this.note,
        'file': this.file
      }).then(res => {
        console.log('res:' + res)
      }, err => {
        console.log('doupload-err:' + err);
      });
     },

      4.请求

    doupload({
      commit
    }, payload) {
      return new Promise((resolve, reject) => {
        let fd = new FormData();
        fd.append('name', payload.name);
        fd.append('note', payload.note);
        fd.append('file', payload.file);
        let config = {
          timeout:300000,
          onUploadProgress: progressEvent => {
            var complete = (progressEvent.loaded / progressEvent.total * 100 | 0)
            console.log('上传进度:'+complete);
          },
          headers: {
            'X-Requested-With': 'XMLHttpRequest',
            'Access-Control-Allow-Origin': '*',
            'Access-Control-Allow-Methods': 'POST',
            'Access-Control-Allow-Headers': 'x-requested-with,content-type',
            'Content-Type': 'multipart/form-data',
          }
        };
        axios.post('/myblog/mycontroller/mymethod', fd,config).then(function(res){
          resolve(res);
        }).catch(function(err){
          reject(err);
        });
      });
    },

    2.2 后端java代码

    @RequestMapping("/doupload")
    public ModelAndView doupload(
        @ApiParam(required=true, value="名称")@RequestParam String name,
        @ApiParam(required=false, value="备注") @RequestParam String note,
        @ApiParam(required=true, value="文件") @RequestParam("file") MultipartFile file) {
        try {
          if (file.isEmpty()) {
            throw new DoubleComException("文件未上传");
          }
        }catch(Exception e) {
            logger.error(e.getMessage(), e);
        }
        ModelAndView mav = new ModelAndView("redirect:page");
        return mav;
    }
  • 相关阅读:
    吃货联盟订餐系统
    第一章课后习题
    hostapd阅读(openwrt)-1
    通过C语言获取MAC地址(转)
    OpenWrt 编译分割
    ubuntu 12.04无盘工作站
    WEB前端性能优化-如何提高页面加载速度
    HTML6
    easyui 根据值查找匹配
    收藏的网站
  • 原文地址:https://www.cnblogs.com/free-discipline/p/11678407.html
Copyright © 2011-2022 走看看