创建新的 pickupFile 方法,分流到 pickupFile2Server 和 pickupFile2Cloud,统一返回 {_state, fileUrl}
This commit is contained in:
parent
9e2cff1227
commit
a894117881
50
index.js
50
index.js
@ -129,7 +129,7 @@ module.exports = {
|
|||||||
async callBackend({ backend = this.BACKEND, httpMethod = 'POST', apiVersion = 'api', apiWho, apiTodo, apiWhat = {} }) {
|
async callBackend({ backend = this.BACKEND, httpMethod = 'POST', apiVersion = 'api', apiWho, apiTodo, apiWhat = {} }) {
|
||||||
console.log('👇 < BackendRequest > ', { apiWho, apiTodo, apiWhat }, ' < /BackendRequest > 👇')
|
console.log('👇 < BackendRequest > ', { apiWho, apiTodo, apiWhat }, ' < /BackendRequest > 👇')
|
||||||
let result = {}
|
let result = {}
|
||||||
if (backend === 'CLOUD') {
|
if (backend === 'UNICLOUD') {
|
||||||
let { /* success, header, requestedId, */ result: resultCloud = {} } = await uniCloud
|
let { /* success, header, requestedId, */ result: resultCloud = {} } = await uniCloud
|
||||||
.callFunction({
|
.callFunction({
|
||||||
name: apiWho,
|
name: apiWho,
|
||||||
@ -182,7 +182,7 @@ module.exports = {
|
|||||||
return result
|
return result
|
||||||
},
|
},
|
||||||
|
|
||||||
async pickupFile({
|
async pickupFile2Server({
|
||||||
mediaType = 'image',
|
mediaType = 'image',
|
||||||
count = 1,
|
count = 1,
|
||||||
sizeType = ['original', 'compressed'],
|
sizeType = ['original', 'compressed'],
|
||||||
@ -192,11 +192,12 @@ module.exports = {
|
|||||||
formData = {},
|
formData = {},
|
||||||
name = 'file',
|
name = 'file',
|
||||||
} = {}) {
|
} = {}) {
|
||||||
if (uni.getStorageSync('_passtoken')) {
|
// 有的管理后台不需要登录就允许上传,例如 cmctoy。因此不要在这里依赖登录状态。
|
||||||
header._passtoken = uni.getStorageSync('_passtoken')
|
// if (uni.getStorageSync('_passtoken')) {
|
||||||
} else {
|
// header._passtoken = uni.getStorageSync('_passtoken')
|
||||||
return [{ _ERROR: 'USER_OFFLINE', errMsg: 'offline user cannot upload files' }, null]
|
// } else {
|
||||||
}
|
// return [{ _ERROR: 'USER_OFFLINE', errMsg: 'offline user cannot upload files' }, null]
|
||||||
|
// }
|
||||||
|
|
||||||
let filePath
|
let filePath
|
||||||
if (mediaType === 'image') {
|
if (mediaType === 'image') {
|
||||||
@ -216,15 +217,24 @@ module.exports = {
|
|||||||
}
|
}
|
||||||
|
|
||||||
uni.showLoading()
|
uni.showLoading()
|
||||||
let [errorUpload, response] = await uni.uploadFile({ url: this.makeServerUrl(url), filePath, name, header, formData })
|
let [errorUpload, { data, statusCode } = {}] = await uni.uploadFile({ url: this.makeServerUrl(url), filePath, name, header, formData })
|
||||||
|
// url 用后台 Multer 处理返回 { _state, filename, originalname, mimetype, size, path },
|
||||||
|
// uni.uploadFile 存在 data 里返回
|
||||||
uni.hideLoading()
|
uni.hideLoading()
|
||||||
|
|
||||||
if (response && response.data) {
|
if (typeof(data)==='string') {
|
||||||
try {
|
try {
|
||||||
response.data = JSON.parse(response.data)
|
data = JSON.parse(data)
|
||||||
} catch (exception) {}
|
} catch (exception) {}
|
||||||
}
|
}
|
||||||
return [errorUpload, response]
|
// return [errorUpload, response]
|
||||||
|
if (data) {
|
||||||
|
return { _state: 'SUCCESS', file: data }
|
||||||
|
}else {
|
||||||
|
return { _state: 'CLIENT_FAIL_UPLOAD_FILE', errorUpload }
|
||||||
|
}
|
||||||
|
}else {
|
||||||
|
return { _state: 'CLIENT_FAIL_CHOOSE_FILE' }
|
||||||
}
|
}
|
||||||
|
|
||||||
return [{ _ERROR: 'USER_CANCELED' }, null]
|
return [{ _ERROR: 'USER_CANCELED' }, null]
|
||||||
@ -265,7 +275,7 @@ module.exports = {
|
|||||||
// 20200915测试,阿里云支持上传 *.mov 了。
|
// 20200915测试,阿里云支持上传 *.mov 了。
|
||||||
if (!/\.(mp4|mov)$/i.test(cloudPath)) cloudPath = cloudPath + '.mp4'
|
if (!/\.(mp4|mov)$/i.test(cloudPath)) cloudPath = cloudPath + '.mp4'
|
||||||
} else {
|
} else {
|
||||||
return { _state: 'UNKNOWN_MEDIA_TYPE' }
|
return { _state: 'CLIENT_FAIL_UNKNOWN_MEDIA_TYPE' }
|
||||||
}
|
}
|
||||||
|
|
||||||
if (process.env.NODE_ENV === 'development') {
|
if (process.env.NODE_ENV === 'development') {
|
||||||
@ -290,7 +300,21 @@ module.exports = {
|
|||||||
return { _state: 'SUCCESS', fileID, requestId }
|
return { _state: 'SUCCESS', fileID, requestId }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return { _state: 'FAIL' }
|
return { _state: 'CLIENT_FAIL_CHOOSE_FILE' }
|
||||||
|
},
|
||||||
|
|
||||||
|
async pickupFile({
|
||||||
|
backend = this.BACKEND,
|
||||||
|
mediaType = 'image', count = 1, sizeType = ['original', 'compressed'], sourceType = ['album', 'camera'], maxDuration,
|
||||||
|
url, header = {}, formData = {}, name = 'file',
|
||||||
|
}) {
|
||||||
|
if (backend==='UNICLOUD'){
|
||||||
|
const resultCloud = await this.pickupFile2Cloud({mediaType, count, sizeType, sourceType, maxDuration })
|
||||||
|
return Object.assign(resultCloud, { fileUrl: resultCloud.fileID })
|
||||||
|
}else if (backend==='SERVER' && url){
|
||||||
|
const resultServer = await this.pickupFile2Server({mediaType, count, sizeType, sourceType, maxDuration, url, header, formData, name})
|
||||||
|
return Object.assign(resultServer, {fileUrl: resultServer.file ? this.makeBgUrl(resultServer.file.filename) : undefined})
|
||||||
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
openUrl(url) {
|
openUrl(url) {
|
||||||
|
Loading…
Reference in New Issue
Block a user