七牛上传

 

HTML中:

<div class="fileUpload-main">
    <div class="upload-img">
        <div class="imgItem" v-for="(item,index) in addForm.dialogImageUrl" :key="index">
            <img :src="item"><i class="el-icon-circle-close" @click="delUploadImg(index)"></i>
        </div>
        <div v-if="addForm.dialogImageUrl.length < 1" class="addImg" @click="handleAddImg">
            <i class="el-icon-plus"></i>
        </div>
    </div>

    <el-dialog style="text-align:left" title="上传图片" :visible.sync="dialogVisible" width="30%">
        <div class="modal-body newpic" style="display: block;">
            <div class="control-group" style="margin-top:28px;">
                <div class="newImg-class">
                    <label class="control-label">本地图片:</label>
                        <div class style>
                            <button type="button" @click="openFile" class="saveBtn" id="qiniuFileBtn">上传图片</button>
                            <input ref="qiniuUpload" data-limitsize="300" type="file" multiple="true" @change="uploadInputchange" name="qiniuUpload" style="display:none;">
                        </div>
                </div>
                <div class="controls" style="margin-left: 123px; margin-top: 20px;">
                    <div>
                        <span style="color: #999;">
                            支持后缀jpg、png、gif的图片,为了保证小程序的加载速度,图片大小最好不要超过1MB
                        </span>
                    </div>
                </div>
           </div>
        </div>
     </el-dialog>
</div>

js中:

// 引入七牛的js
import * as qiniu from 'qiniu-js'
//定义变量
data: {
        dialogVisible: false, //弹出框隐藏
        token: "", //获取到的七牛token
        file: "", //选择要上传的文件
        pathPrex: "xxxxx/", //七牛存储控制默认url前缀
        key: "", //上传成功之后返回的图片后缀

        addForm: {
            dialogImageUrl: []
        }
}
mounted() {
        this._initToken();
}
//定义方法

methods: {
            // 图片上传函数开始
        _initToken() {  //获取七牛所需的token
            let ctx = this;
            $.ajax({
                type: 'GET',
                url: /*后端地址*/,
                headers: {
                    
                },
                success: function (data) {
                    console.log(data);
                    if(data.ret == 0){
                        ctx.token = data.model.token;
                    }
                },
                error: function (data) {
                    console.log(data)
                }
            })
        },
        delUploadImg: function (index) { //删除当前下标的图片
            this.addForm.dialogImageUrl.splice(index,1);
        },
        handleAddImg: function() {  //显示弹出框
            this.dialogVisible = true;
        },
        openFile: function () {   //间接点击上传图片按钮
            this.$refs.qiniuUpload.click();
        },
        dealKey() {  //获取当前的年月 保证图片的唯一性
            let year = new Date().getFullYear();
            let month = new Date().getMonth();
            return `${year}/${month}`;
        },
        uploadInputchange: function () {  //图片上传至七牛 相关配置
            let ctx = this;
            this.file = this.$refs.qiniuUpload.files[0];
            let file = this.file;
            // console.log(file);
            let uploadToken = this.token;
            let qnConfig = {
                useCdnDomain: true,
                region: null
            };
            let key = `${this.dealKey()}/${Math.floor(Math.random() * 999999)}/${file.name}`;
            let putExtra = {
                fname: file.name.split(".")[0], //文件原文件名
                params: {}, //用来放置自定义变量
                mimeType: null
            };
            let observer = {
                next: function(res) {},
                error: function(err) {},
                complete: function(res) {
                    ctx.key = res.key;
                    let newImg = `${ctx.pathPrex}${res.key}`;
                    ctx.addForm.dialogImageUrl.push(newImg);
                    ctx.dialogVisible = false;
                }
            };
            let observable = qiniu.upload(file, key, uploadToken, putExtra, qnConfig);
            let subscription = observable.subscribe(observer); // 上传开始
        },
        // 图片上传函数结束
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值