美文网首页
vue中使用腾讯云对象存储来上传文件

vue中使用腾讯云对象存储来上传文件

作者: 往前走莫回头_2cd6 | 来源:发表于2018-11-23 15:17 被阅读0次

    最近在做网页的时候,遇到一个上传图片的功能,经商量后,打算直接上传到腾讯云对象存储上并获得储存地址来返回给后端。因为用的是vue框架,所以在这个过程中遇到一些问题,把它记录下来,希望对大家有所帮助。

    1,SDK 获取

    对象存储服务的 XML JS SDK 资源 github 地址:tencentyun/cos-js-sdk-v5

    然后下载在index.html中引入:

    下面是我的index.html文件


    <!DOCTYPE html>

    <html>

      <head>

        <meta charset="utf-8">

        <meta name="viewport" content="width=device-width,initial-scale=1.0">

        <title>对象储存</title>

        <link rel="stylesheet" href="static/animate.css" />

        <script type="text/javascript" src="./static/cos-js-sdk-v5.js"></script>

      </head>

      <body>

        <div id="app"></div>

        <!-- built files will be auto injected -->

      </body>

    </html>


    接下来在需要用到上传文件的组件结构中加上input,type为file,添加一个change事件,通过$event来把input中的传到shangchuan这个方法中


    <div class="content">

    <input id="file" type="file" @change='shangchuan($event)'>

    </div>


    然后是该组件的script中的操作


    <script>

    var Bucket ='smarthome-1256847421';//腾讯云对象储存桶名

    var Region = 'ap-guangzhou';//对象储存你所处的地区编号,这里是广州

    var cos = new COS({

        getAuthorization: function (options,callback) { 

    var authorization = COS.getAuthorization({

                 SecretId: 'AKxxxxxxxxxxxxs6', //这是密钥ID

                SecretKey: 'Uxxxxxxxxxxxxxxxxxxxymb', //这是密钥的钥匙(哇,我都不知道怎么说了,总之是在腾讯云对象储存上注册登录后你要申请的东西)

                  Method: options.Method,

                  Key: options.Key,

                  Query: options.Query,

                  Headers: options.Headers,

                  Expires: 60,

              });

              callback(authorization);

    }

    });

    export default {

    data(){

    return{

    }

    },

    mounted:function(){

    },

    methods:{

    shangchuan(e){

    var file = e.target.files[0];

        if (!file) return;

        // 分片上传文件

        cos.putObject({

            Bucket: Bucket,     

            Region: 'ap-guangzhou',

            Key: file.name,

            Body: file,

            onProgress: function (progressData,callback) {

                logger.log(JSON.stringify(progressData));

            },

      }, function(err, data) {

    // console.log(err,data);

      });

    //下面这个方法是vue中获取你上传成功后的Url地址,别人可以通过这个地址来查看,下载你上传的文件

    cos.getObjectUrl({

        Key: file.name,

        Bucket: Bucket,

        Sign: false,

        Region: 'ap-guangzhou',

    }, function (err, data) {

        console.log(data.Url);

    });

    },

    },

    }

    </script>

    当返回200时,就是成功啦。

    大家使用vue框架时遇到了这个问题可以借鉴一下呢,希望能对大家有所帮助

    相关文章

      网友评论

          本文标题:vue中使用腾讯云对象存储来上传文件

          本文链接:https://www.haomeiwen.com/subject/wzejqqtx.html