原生input上传图片点击修改

 Html

        <div class="upload-picture">
            <div class="uploadItem" v-if="imageUrl">
                <input type="file" v-if="clearInputShow" hidden ref="uploadfile" @change="onChangeFile" />
                <img class="avatar" :src="imageUrl" alt="" srcset="" @click="selectPicture()" />
                <div>
                    <el-button class="button1" type="default" size="mini" @click="selectPicture()">修改</el-button>
                    <el-button class="button1" type="default" size="mini" @click="remove()">移除</el-button>
                </div>
            </div>
            <div class="uploadItem" v-else>
                <input v-if="clearInputShow" type="file" hidden ref="uploadfile" @change="onChangeFile" />
                <i class="el-icon-plus avatar-uploader-icon" @click="selectPicture"></i>
                <el-button class="button" type="default" size="mini" @click="selectPicture">选择图片</el-button>
            </div>
        </div>

Css

<style lang="less" scoped>
 
.uploadItem {
    display: flex;
    flex-direction: column;
    justify-content: center;
    align-items: center;
    width: 178px;
}
 
.avatar-uploader-icon {
    font-size: 28px;
    color: #8c939d;
    width: 178px;
    height: 178px;
    line-height: 178px;
    text-align: center;
    border: 1px dashed #d9d9d9;
}
 
.button {
    width: 80px;
    margin-top: 10px;
}
 
.button1 {
    width: 60px;
    margin-top: 10px;
}
 
.avatar {
    width: 178px;
    height: 178px;
    display: block;
    border: 1px dashed #d9d9d9;
}
</style>

js

export default {
    props: {
        imageUrl: {
            type: String,
            default: ""
        },
    },
    data() {
        return {
            clearInputShow: true
        }
    },
    methods: {
        // 上传
        selectPicture() {
            this.$refs.uploadfile.click();
        },
        // 移除文件
        remove() {
            this.$emit("update:imageUrl", '')
        },
 
        // 手动上传文件
        onChangeFile() {
            // file上传的文件
            let file = this.$refs.uploadfile.files[0];
            const formData = new FormData()
            // 上传文件的参数都以这种方法
            formData.append('file', file)
            formaData.append('fileName', file.name)
            this.clearInputShow=false
            // 上传接口
            this.$axios.post('接口地址', formData).then(res => {
                this.clearInputShow=true
                // 假设res.data.picUrl是接口返回图片路径
                this.$emit("update:imageList", res.data.picUrl)
            }).catch(error=>{
                 this.clearInputShow=true
            })
        },
    }
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值