上传图片到七牛云

这里引用的是七牛的的2.0版本

官方给出的两个例子有些复杂,我看的不是很明白,自己总结了一下用法,有不对的地方还望大家指出,

第一步:引入七牛云的js文件

引入地址:https://unpkg.com/qiniu-js@<version>/dist/qiniu.min.js

第二步:七牛云上传的关键步骤
var observable = qiniu.upload(file, key, uptoken, putExtra, config);
observable.subscribe(observer);//上传开始

这两行代码中,我们关键的要处理的是参数的部分
file:我们要上传的图片文件,例如:var file = this.files[0];
key:上传文件的名称,例如:img.jpg
uptoken:从后台获取到的token值,后台还会返给我们个domain值,这个值在后面我们也会用到
putExtra:按照官方给出的模式写就可以了
        var putExtra = {
                      fname: "",
                        params: {},
                        mimeType: ["image/png", "image/jpeg", "image/gif"]  //这里是我们要上传的文件类型
                    };
config:

    var config = {
                    useCdnDomain: true,
                    region: qiniu.region.z0//这个值要根据不同的地方设置不用的域
                };
    qiniu.region.z0: 代表华东区域
    qiniu.region.z1: 代表华北区域
    qiniu.region.z2: 代表华南区域
    qiniu.region.na0: 代表北美区域
    qiniu.region.as0: 代表东南亚区域

案例展示

<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8">
        <title></title>
        <style>
            .imgshow{
                width: 100%;
                object-fit:cover;
                height: 100%;
            }

            .pickFileBox{
                position: relative;
                display: inline-block;
                background: #D0EEFF;
                border: 1px solid #99D3F5;
                border-radius: 8px;
                padding: 4px 12px;
                overflow: hidden;
                color: #1E88C7;
                text-decoration: none;
                text-indent: 0;
                line-height: 20px;
            }
            .pickFileBox input{
                 position: absolute;
                font-size: 100px;
                right: 0;
                top: 0;
                opacity: 0
            }
            .imgBox{
                display: inline-block;
                height: 80px;
                width: 80px;
                border: 1px solid #ccc;
                border-radius: 8px;
                margin-right: 10px;
            }

        </style>
    </head>
    <body>
        <!--accept="image/*" 规定只可以上传图片-->
        <div class="pickFileBox">
            选择文件
            <input type="file" name="" id="" value="" class="pickImg" accept="image/*"/>
        </div>



        <script src="jquery.min.js"></script>
        <script src="qiniu.js"></script>
        <script>    
            $(function(){
                $('.pickImg').change(function(){
                    var file = this.files[0];
                    var key = file.name;
                    var fileType =key.substr(key.lastIndexOf('.'));//文件后缀名
                    $.ajax({
                        type:"post",
                        url:"获取token和domain的地址",
                        success:function(data){
                            var result = JSON.parse(data).Result;
                            var domain = result.Domain;
                            var uptoken = result.UpToken;
                            var UniqueKey = result.UniqueKey;

                            //设置这个方法的里面的几个参数:qiniu.upload(file, key, uptoken, putExtra, config);observable.subscribe(observer);
                            var putExtra = {
                                fname: "",
                                params: {},
                                mimeType: ["image/png", "image/jpeg", "image/gif"]
                            };
                            var config = {
                                useCdnDomain: true,
                                region: qiniu.region.z0
                            };
                            var observer = {
                                next(res){

                                },
                                error(err){
                                    alert('上传失败');
                                }, 
                                complete(res){
                                    var _url = domain + '/' + res.key + '?imageView2/2/w/400';//上传成功之后得到的网络地址
                                    console.log(_url);
                                    var reader = new FileReader();
                                    //使用该对象读取file文件
                                    reader.readAsDataURL(file);
                                    //读取文件成功后执行的方法函数
                                      reader.onload=function(e){
                                    //读取成功后返回的一个参数e,整个的一个进度事件
                                        console.log(e);
                                        //e.target.result;显示的是本地的地址
                                    //选择所要显示图片的img,要赋值给img的src就是e中target下result里面
                                    //的base64编码格式的地址

                                    var $img = '<div class="imgBox">'+
                                                    '<img src="'+_url+'" class="imgshow"/>'+
                                                '</div>';
                                        $('.pickFileBox').before($img);
//                                      
                                      }
                                }
                            };
                            var observable = qiniu.upload(file, key, uptoken, putExtra, config);
                            observable.subscribe(observer);//上传开始

                        }
                    });
                });
            });


        </script>
    </body>
</html>

猜你喜欢

转载自blog.csdn.net/qq_34543252/article/details/79880160