Add mini-program points task center
This commit is contained in:
@@ -0,0 +1,45 @@
|
||||
import { getPointTaskUploadToken } from '@/api/app/index.js'
|
||||
|
||||
function fileNameFromPath(path) {
|
||||
const clean = String(path || '').split('?')[0]
|
||||
return clean.substring(clean.lastIndexOf('/') + 1) || ('task-' + Date.now() + '.jpg')
|
||||
}
|
||||
|
||||
function contentTypeOf(file) {
|
||||
if (file && file.type) return file.type
|
||||
const name = fileNameFromPath(file && file.path)
|
||||
const ext = name.substring(name.lastIndexOf('.') + 1).toLowerCase()
|
||||
if (ext === 'png') return 'image/png'
|
||||
if (ext === 'webp') return 'image/webp'
|
||||
return 'image/jpeg'
|
||||
}
|
||||
|
||||
/** 小程序直传任务截图到七牛云。 */
|
||||
export function uploadPointTaskImage(file) {
|
||||
const filePath = file.path || file.tempFilePath
|
||||
const fileName = file.name || fileNameFromPath(filePath)
|
||||
const fileSize = Number(file.size || 0)
|
||||
const contentType = contentTypeOf(file)
|
||||
return getPointTaskUploadToken({ fileName, fileSize, contentType }).then(response => {
|
||||
const data = response.data || {}
|
||||
return new Promise((resolve, reject) => {
|
||||
uni.uploadFile({
|
||||
url: data.uploadHost,
|
||||
filePath: filePath,
|
||||
name: 'file',
|
||||
formData: {
|
||||
token: data.uploadToken,
|
||||
key: data.objectKey
|
||||
},
|
||||
success: result => {
|
||||
if (result.statusCode >= 200 && result.statusCode < 300) {
|
||||
resolve({ objectKey: data.objectKey, localPath: filePath })
|
||||
return
|
||||
}
|
||||
reject(new Error('七牛上传失败,请重试'))
|
||||
},
|
||||
fail: reject
|
||||
})
|
||||
})
|
||||
})
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user