vue内部上传图片函数

upload() { //上传图片
        const loading = this.$loading({
          lock: true,
          text: 'Loading',
          target:".el-form-item__content",
          spinner: 'el-icon-loading',
          background: 'rgba(250, 250, 250, 0.7)'
        });
        this.picnum = this.picnum + 1;
        var self = this;
        var value = this.$refs['inputImg'].value;
        if(!/\.(gif|jpg|jpeg|png|GIF|JPG|PNG)$/.test(value)) {
          _.message('error','图片格式错误');
          loading.close();
          return false;
        } 
        var fileList  = document.getElementById('inputImg').files;
        if (fileList.length >= 2) {
          _.message('error','请只上传一张图片');
          loading.close();
          return false;
        }
        var input = document.getElementById('inputImg');
        var max_size = 200;// 200k
        var filesize = input.files[0].size;
        //压缩文件大小不能大于200kb
        if (filesize > max_size * 1024) {
            _.message('error','上传图片过大');
            loading.close();
            return false;
        }
        var formData = new FormData(document.getElementById('uploadFormMulti'));
        this.$http.post(_.ipValue('file')+'/img/uploadifySave.html',formData, {
        // this.$http.post("//192.168.10.104:8080"+'/img/uploadifySave.html',formData, {
          method: 'post',
          dataType: 'JSON',  
          timeout: 0,
          headers: {
            'Content-Type': 'multipart/form-data'
          },
          transformRequest: [function (data) {
              return data
          }],
          onUploadProgress: function(e) {
            let percentage = Math.round((e.loaded * 100) / e.total) || 0
          }
        }).then((response) => {
          loading.close();
          if (response.data.code == '200') {
            _.message('success','上传成功');
            this.picnum = this.picnum + 1;
            document.getElementById('uploadFormMulti')[0].value ='';
            this.ruleFormProf.markPic = response.data.data.pic;
            this.ruleFormProf.markPicNew = response.data.data.httpUrl + response.data.data.pic;
          } else if (res.code == '403') {
            this.$store.state.userInfo = null;
            this.$router.push('/orgLogin');
          } else {
            _.message('error','上传失败');
          }
        }).catch(function (error) {
          alert("0");
        })
      },

跟代码

<el-form-item  label="上传救援队标志: " prop="markPicNew"  style="padding-top:20px;" >

                <div class='upload-box ' >

                  <div v-if="!ruleFormProf.markPic" class="pic-item-div">
                    <div class='btn-uploadPic'  @click=" subminUpload()">+</div>
                    <form action="" class='pic-item-div' method="post" enctype="multipart/form-data" id="uploadFormMulti" >
                      <input type="file" name='file' id='inputImg' ref='inputImg' multiple
                        accept="image/jpg,image/jpeg,image/png,image/gif"
                        @change="upload('uploadFormMulti')">
                    </form>
                  </div>
                  <p class="tips"> 点击上传队伍标志(图片小于200kb)</p>
                
                </div>
                <div  v-if="ruleFormProf.markPic">
                  <form action="" class='pic-item-div' method="post" enctype="multipart/form-data" id="uploadFormMulti" >
                      <span style="display:inline-block;height:140px;overflow:hidden;width:340px;">
                        <img v-if="ruleFormProf.markPic" :src="ruleFormProf.markPicNew" :alt="ruleFormProf.markPicNew" style="height:140px;width:auto;" @click=" subminUpload()">
                      </span>
                      <input type="file" name='file' id='inputImg' ref='inputImg' multiple
                            accept="image/jpg,image/jpeg,image/png,image/gif"
                            @change="upload('uploadFormMulti')">
                  </form>
                </div>
                    
               <span v-show="false">{{picnum}}</span>
              </el-form-item>

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Vue 中使用 ElementUI 进行图片上传,可以通过以下步骤来实现: 1. 首先,确保已经安装了 Vue.js 和 ElementUI。 2. 创建一个 Vue 组件,用于处理图片上传功能。可以命名为 ImageUpload.vue。 3. 在 ImageUpload.vue 组件中引入 ElementUI 的上传组件,代码如下: ```html <template> <div> <el-upload action="/api/upload" :on-success="handleSuccess" :before-upload="handleBeforeUpload" :show-file-list="false" > <el-button type="primary" icon="el-icon-upload">点击上传图片</el-button> </el-upload> </div> </template> <script> export default { methods: { handleSuccess(response) { // 上传成功后的处理逻辑 console.log(response); }, handleBeforeUpload(file) { // 在上传之前的处理逻辑,比如限制图片类型和大小 const isJPG = file.type === 'image/jpeg' || file.type === 'image/png'; const isLt2M = file.size / 1024 / 1024 < 2; if (!isJPG) { this.$message.error('上传图片只能是 JPG/PNG 格式!'); } if (!isLt2M) { this.$message.error('上传图片大小不能超过 2MB!'); } return isJPG && isLt2M; }, }, }; </script> ``` 4. 在上述代码中,`<el-upload>` 组件是 ElementUI 提供的上传组件。其中,`action` 属性指定了上传的 URL 地址,在这里可以根据需求进行修改;`on-success` 属性绑定了上传成功后的处理函数,可以在其中进行需要的处理;`before-upload` 属性绑定了上传之前的处理函数,可以在其中进行图片类型和大小的限制等处理;`show-file-list` 属性设置为 `false`,表示不显示已上传文件的列表。 5. 可以在 `<el-upload>` 标签内部添加其他元素和样式来进行页面布局和美化,以满足自己的需求。 6. 最后,将 ImageUpload.vue 组件引入到需要使用图片上传功能的页面中,并在相应的位置使用组件标签,即可实现图片上传功能。 以上就是使用 Vue 和 ElementUI 进行图片上传的简单实现方式。根据实际需求,可以根据 ElementUI 上传组件的 API 进行更多的自定义和扩展。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值