linwe
2023-11-12 b77cc2d2012ecb4b876538ac7aee3edac7db8a2f
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
import {
    devUrl,
    clientId,
    clientSecret
} from '@/common/setting'
 
import {
    Base64
} from '@/utils/base64.js';
export default {
    data() {
        return {
            form: {
                images: []
            },
 
            uploadConfig: {
                acceptImg: "image",
                acceptVideo: 'video',
                capture: ['album', 'camera'],
                multiple: true,
                maxCount: "5",
                previewFullImage: true,
                uploadText: "上传中",
                url: devUrl + "/blade-resource/oss/endpoint/put-file-attach",
                header: {},
            },
        }
    },
 
    created() {
        this.getHeader()
    },
 
    methods: {
        //获取头部
        getHeader() {
            let accessToken = uni.getStorageSync('accessToken');
            let myHeader = {}
            if (accessToken) {
                myHeader['Blade-Auth'] = 'bearer ' + accessToken;
            }
            // 客户端认证参数
            myHeader['Authorization'] = 'Basic ' + Base64.encode(clientId + ':' + clientSecret);
            this.uploadConfig.header = myHeader
        },
 
        //上传方法
        uploadFilePromise(url) {
            return new Promise((resolve, reject) => {
                let a = uni.uploadFile({
                    url: this.uploadConfig.url, //接口地址
                    filePath: url,
                    name: 'file',
                    header: this.uploadConfig.header,
                    success: (res) => {
                        let data = JSON.parse(res.data)
                        setTimeout(() => {
                            resolve(data)
                        }, 1000)
                    }
                });
            })
        },
 
        //上传成功后对返回数据进行处理
        async afterReadImg(event) {
            this.showLoading()
            var that = this;
            // 当设置 multiple 为 true 时, file 为数组格式,否则为对象格式
            let lists = [].concat(event.file)
            let fileListLen = this.form.images.length
            lists.map((item) => {
                this.form.images.push({
                    ...item,
                    status: 'uploading',
                    message: '上传中'
                })
            })
            for (let i = 0; i < lists.length; i++) {
                const result = await this.uploadFilePromise(lists[i].url)
                that.form.images.splice(fileListLen, 1, Object.assign({}, {
                    url: result.data.link,
                    name:result.data.name
                }))
                fileListLen++
            }
            this.loadingClose()
        },
        
 
        //删除图片
        deletePic(event) {
            this.form.images.splice(event.index, 1)
        },
        showLoading() {
            uni.showLoading({
                mask: true,
                title: '上传中'
            })
        },
        loadingClose() {
            uni.hideLoading()
        },
    }
}