vue上传阿里云图片组件

Posted 奔跑the蚂蚁

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了vue上传阿里云图片组件相关的知识,希望对你有一定的参考价值。

首先需要弄一个阿里云存储。然后配置一下。前端就可以直接上传图片并回显。
可在父级组件定义上传图片类型以及大小。默认为500kb。样式可以自适应调整。

<template>
    <div class="upLoat">
        <a href="javascript:;" class="file">上传图片
            <input type="file" :accept="typeArr" @change="upload($event)">
        </a>
    </div>
</template>
<script>
    import {Toast} from \'mint-ui\';
    export default {
        props     : [\'data\', \'typeArr\', \'size\'],
        data(){
            return {
                client  : \'\',
                fileSize: 500000
            }
        },
        created(){
            if (this.size) {
                this.fileSize = this.size;
            }
            this.client = new OSS.Wrapper({
                region         : process.env.region,
                secure         : true,
                accessKeyId    : process.env.accessKeyId,
                /*这两者到阿里云控制台获得*/
                accessKeySecret: process.env.accessKeySecret,
                bucket         : process.env.bucket /*装图片的桶名*/
            });
        }, methods: {
            /**上传图片**/
            upload(event){
                var self = this;
                var file = event.target.files[0];

                var type    = file.name.split(\'.\')[1];
                var storeAs = this.getUuid() + \'.\' + type;
                var boolean = true;
                if (file.size > this.fileSize) {
                    Toast(\'亲,图片不能超过!\' + this.fileSize / 1000 + \'kb\');
                    return false;
                }
                if (this.typeArr && this.typeArr.indexOf(type) > 0) {
                    boolean = false;
                }
                if (boolean) {
                    Toast(\'上传图片格式不支持!请选择\' + this.typeArr);
                    return false;
                }
                this.client.multipartUpload(storeAs, file).then(function (result) {

                    self.data.url = result.res.requestUrls[0].split(\'?\')[0];

                }).catch(function (err) {

                    console.log(err);
                });

            },
            getUuid() {
                var len   = 32; //32长度
                var radix = 16; //16进制
                var chars = \'0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz\'.split(\'\');
                var uuid  = [],
                    i;
                radix     = radix || chars.length;
                if (len) {
                    for (i = 0; i < len; i++) uuid[i] = chars[0 | Math.random() * radix];
                } else {
                    var r;
                    uuid[8] = uuid[13] = uuid[18] = uuid[23] = \'-\';
                    uuid[14] = \'4\';
                    for (i = 0; i < 36; i++) {
                        if (!uuid[i]) {
                            r       = 0 | Math.random() * 16;
                            uuid[i] = chars[(i == 19) ? (r & 0x3) | 0x8 : r];
                        }
                    }
                }
                return uuid.join(\'\');

            }
        }
    }
</script>
<style scoped lang="less">

    .file {
        position: relative;
        left: .26rem;
        top: .2rem;
        display: inline-block;
        background: #32d582;
        border: 1px solid #99D3F5;
        border-radius: 4px;
        padding: 4px 12px;
        overflow: hidden;
        color: white;
        text-decoration: none;
        text-indent: 0;
        line-height: 20px;
    }

    .file input {
        position: absolute;
        font-size: 100px;
        right: 0;
        top: 0;
        opacity: 0;
    }

</style>

父级组件:

       <up-Load class="files" :data="item"
                                 typeArr="image/png,image/jpg,image/gif,image/jpeg" size="50000"></up-Load>

全局引入  <script src="http://gosspublic.alicdn.com/aliyun-oss-sdk-4.4.4.min.js"></script>

以上是关于vue上传阿里云图片组件的主要内容,如果未能解决你的问题,请参考以下文章

vue页面传值能传图片吗

vue 上传文件到 阿里云OSS,并获取上传进度

vue element-ui 上传图片到oss阿里云(第三方服务)

vue中上传图片至阿里云oss

vue--阿里云视频上传

vue + elementUi + upLoadIamge组件 上传文件到阿里云oss