web 端layui 上传阿里云oss

STS临时授权访问OSS:https://help.aliyun.com/document_detail/100624.html?spm=5176.11065259.1996646101.searchclickresult.537211faurHs2M

 

1、下载对应的获取sts的SDKhttps://help.aliyun.com/document_detail/121136.html?spm=5176.10695662.1996646101.searchclickresult.69d57332iU8iJw

其中config.json 

{
    
    "AccessKeyID" : "你的keyid",
    "AccessKeySecret" : "你的secreet",
    "RoleArn" : "acs:ram::你的:role/你的",
    "BucketName" : "你的",
    "Endpoint" : "oss-cn-beijing.aliyuncs.com",
    "TokenExpireTime" : "3600",
    "PolicyFile": "policy/bucket_read_write_policy.txt"
    }





AccessKeyID和AccessKeySecret获取的方法

 

 

 

RoleArn获取

 

配置Endpoint

https://help.aliyun.com/document_detail/34951.html?spm=5176.11065259.1996646101.searchclickresult.52ec2848H15pdh

 

接着配置policy/bucket_read_write_policy.txt

 

{
  "Statement": [
    {
      "Action": [
        "oss:GetObject",
        "oss:PutObject",
        "oss:DeleteObject",
        "oss:ListParts",
        "oss:AbortMultipartUpload",
        "oss:ListObjects"
      ],
      "Effect": "Allow",
      "Resource": ["acs:oss:*:*:你的bucket名称/*", "acs:oss:*:*:你的backet名称"]
    }
  ],
  "Version": "1"
}

 

以上两个文件配置完成后就可以访问sts文件获取获取临时

AccessKeyId、AccessKeySecret、SecurityToken这三个参数

web上传阿里云oss文件

跨域设置
解决 JavaScript 的跨域访问问题

 

 

 

 

对应前端sdk下载地址https://help.aliyun.com/document_detail/64041.html?spm=a2c4g.11186623.6.1465.175c347001mBJa

直接上js代码

<script src="assets/dist/aliyun-oss-sdk.js"></script>
<script>
  $(function() {
/**
 * 表单验证提交
 * @type {*}
 */
$('#my-form').superForm();
});


    layui.use(['form', 'upload', 'element'], function() {
        var $ = layui.jquery,
            upload = layui.upload;
        var element = layui.element;
        //拖拽上传
        upload.render({
            elem: '#test10',
            auto: false,
            accept: 'video', //视频
            exts: 'mp4', //
            choose: function(obj) {
                element.progress('js_upload_progress', '1%'); //设置页面进度
                    layer.open({
                        type: 1,
                        title: false,
                        closeBtn: 0,
                        anim: 2,
                        area: ['300px', '170px'],
                        shadeClose: false,
                        content: $("#uploadLoadingDiv").html(),
                        offset: '100px'
                    });
                obj.preview(function(index, file, result1) {
                    console.log(file.size); //得到文件对象
                    console.log(file.type); //得到文件对象
                    let storeAs = '<?= $file_name ?>' + '.mp4';//设置上传的文件名
                    OSS.urllib.request("/sts-server/sts.php", {
                        method: 'GET'
                    }, (err, response) => {
                        if (err) {
                            return alert(err);
                        }
                        try {
                            result = JSON.parse(response);
                        } catch (e) {
                            return alert('parse sts response info error: ' + e.message);
                        }
                        let client = new OSS({
                            accessKeyId: result.AccessKeyId,
                            accessKeySecret: result.AccessKeySecret,
                            stsToken: result.SecurityToken,
                            // region表示您申请OSS服务所在的地域,例如oss-cn-hangzhou。
                            region: '<?= config('region') ?>',
                            bucket: '<?= config('bucket') ?>'
                        });
                        client.multipartUpload(storeAs, file, {
                            progress: function(p, checkpoint) {
                                console.log(p);//上传进度监控
                                element.progress('js_upload_progress', p * 100 + '%');
                                if (p == 1) {
                                    layer.close(layer.index);
                                    layer.msg('上传成功');
                                    $('#svideo').val(storeAs);
                                    $('#svideosize').val(file.size);
                                    $("input[name='file']").val('');//上传成功后将文件input清空**
                                    layui.$('#uploadDemoView').removeClass('layui-hide').find('video').attr('src', 'http://'+'<?= config('bucket') ?>'+'.'+'<?= config('region') ?>'+'.aliyuncs.com/' + storeAs);
                                }
                            }
                        }).then(function(result) {
                            console.log(result);
                        }).catch(function(err) {
                            console.log(err);
                        });
                    });
                });

            }
        });



    });
</script>

 

posted @ 2020-11-17 10:35  ……屁孩  阅读(1726)  评论(0编辑  收藏  举报