开发者社区> 问答> 正文

oss web上传失败 STS已鉴权成功

RequestError: XHR error (req "error"), POST https://xxxx.cn-beijing.aliyuncs.com/zhangerda_20220319102141_ZtmXXsGROW.flv?uploads= -1 (connected: false, keepalive socket: false)
headers: {}
    at Client._callee2$ (app.js:1172:21)
    at tryCatch (app.js:25730:40)
    at Generator.invoke [as _invoke] (app.js:25961:22)
    at Generator.next (app.js:25786:21)
    at asyncGeneratorStep (app.js:8202:24)
    at _next (app.js:8224:9)
    at app.js:8231:7
    at new Promise (<anonymous>)
    at Client.<anonymous> (app.js:8220:12)
    at Client.requestError (app.js:1260:26)

laraval admin web端直传oss

$('#oss-upload').on('click', (e) => {
        let region = $(e.currentTarget).data('region');
        let accessKey = $(e.currentTarget).data('access-key');
        let accessSecret = $(e.currentTarget).data('access-secret');
        let stsToken = $(e.currentTarget).data('sts-token');
        let bucket = $(e.currentTarget).data('bucket');
        const client = new OSS({
            secure: true,
            region: region,
            accessKeyId: accessKey,
            accessKeySecret: accessSecret,
            stsToken: stsToken,
            bucket: bucket,
        });

        if ($('input[type=file]').length == 0) {
            // 提示:页面没有上传文件按钮
        }
        let fileNumber = 0;
        $('input[type=file]').each(function (k, v) {
            fileNumber += v.files.length;
            if (v.files.length > 0) {
                $.each(v.files, async function (i, file) {
                    let originName = encodeURIComponent(file.name);
                    let nameArray = originName.split(".");
                    let ext = nameArray.pop();
                    let filename = nameArray.join(".") + "_" + Tools.CurrentTime() + "_" + Tools.RandomString(10) + "." + ext;
                    const headers = {
                        // 指定该Object被下载时的网页缓存行为。
                        "Cache-Control": "no-cache",
                        // 指定该Object被下载时的名称。
                        "Content-Disposition": originName,
                        // 指定该Object被下载时的内容编码格式。
                        "Content-Encoding": "utf-8",
                        // 指定过期时间,单位为毫秒。
                        Expires: "1000",
                        // 指定Object的存储类型。
                        "x-oss-storage-class": "Standard",
                        // 指定Object标签,可同时设置多个标签。
                        // "x-oss-tagging": "Tag1=1&Tag2=2",
                        // 指定初始化分片上传时是否覆盖同名Object。此处设置为true,表示禁止覆盖同名Object。
                        "x-oss-forbid-overwrite": "true",
                    };
                    const options = {
                        // 获取分片上传进度、断点和返回值。
                        progress: (p, cpt, res) => {
                            console.log(p);
                        },
                        // 设置并发上传的分片数量。
                        parallel: 4,
                        // 设置分片大小。默认值为1 MB,最小值为100 KB。
                        partSize: 1024 * 1024,
                        // headers,
                        // 自定义元数据,通过HeadObject接口可以获取Object的元数据。
                        meta: { length: file.size, originName: file.size, type:file.type},
                        mime: "text/plain",
                    };
                    try {
                        const res = await client.multipartUpload(filename, file, {
                            option:options,
                            headers:headers
                        });
                        alert(res);
                    } catch (err) {
                        console.log(err);
                        alert(err.message)
                    }
                });
            }
        })
        if (fileNumber == 0) {
            // 提示:请选择文件
        }
    });

哪里有问题么?

展开
收起
思不如学 2022-03-19 10:49:42 2966 0
1 条回答
写回答
取消 提交回答
  • 可以尝试在阿里云oss设置跨域访问试下

    2022-05-21 08:30:34
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
Web应用系统性能优化 立即下载
高性能Web架构之缓存体系 立即下载
PWA:移动Web的现在与未来 立即下载