info
This commit is contained in:
+48
@@ -0,0 +1,48 @@
|
||||
async function deleteMedia (params) {
|
||||
const {mediaIds = [], deleteOriginalFile = true} = params
|
||||
const db = uniCloud.database()
|
||||
|
||||
if (mediaIds.length <= 0) {
|
||||
return {
|
||||
errCode: 0
|
||||
}
|
||||
}
|
||||
|
||||
const mediaList = await db.collection('uni-media-library').where({
|
||||
_id: db.command.in(mediaIds)
|
||||
}).get()
|
||||
|
||||
if (!mediaList.data || mediaList.data.length <= 0) {
|
||||
return {
|
||||
errCode: 0
|
||||
}
|
||||
}
|
||||
|
||||
const mediaFileIds = mediaList.data.filter(item => item.src).map(item => item.src)
|
||||
const coverFileIds = mediaList.data.filter(item => item.type === 'video' && item.cover).map(item => item.cover)
|
||||
|
||||
try {
|
||||
await Promise.all([
|
||||
// 删除云数据库中的记录
|
||||
db.collection('uni-media-library').where({
|
||||
_id: db.command.in(mediaIds)
|
||||
}).remove(),
|
||||
// 删除云存储中的文件
|
||||
deleteOriginalFile && mediaFileIds.length && uniCloud.deleteFile({
|
||||
fileList: mediaFileIds
|
||||
}),
|
||||
// 删除云存储中的文件
|
||||
deleteOriginalFile && coverFileIds.length && uniCloud.deleteFile({
|
||||
fileList: coverFileIds
|
||||
})
|
||||
])
|
||||
} catch (e) {
|
||||
console.log('删除云存储图片失败', e)
|
||||
}
|
||||
|
||||
return {
|
||||
errCode: 0
|
||||
}
|
||||
}
|
||||
|
||||
module.exports = deleteMedia
|
||||
+14
@@ -0,0 +1,14 @@
|
||||
const config = require('../../common/config')
|
||||
|
||||
async function getProviders() {
|
||||
return {
|
||||
errCode: 0,
|
||||
data: config.imageLibraryProviders.map(item => ({
|
||||
provider: item.provider,
|
||||
name: item.name,
|
||||
website: item.website,
|
||||
}))
|
||||
}
|
||||
}
|
||||
|
||||
module.exports = getProviders
|
||||
+60
@@ -0,0 +1,60 @@
|
||||
const fs = require('fs')
|
||||
// const stream = require("stream")
|
||||
const config = require('../../common/config')
|
||||
|
||||
module.exports = async function (params) {
|
||||
const {url = '', id, provider = ''} = params
|
||||
const cloudInfo = uniCloud.getCloudInfos()[0]
|
||||
const isAliyun = cloudInfo.provider === 'aliyun'
|
||||
const imageLibraryProviders = config.imageLibraryProviders || []
|
||||
const providerConfig = imageLibraryProviders.find(item => item.provider === provider)
|
||||
|
||||
let imageDetail = {
|
||||
fileType: 'jpeg'
|
||||
}
|
||||
|
||||
if (id && providerConfig) {
|
||||
const entry = require(providerConfig.entryFilePath)
|
||||
try {
|
||||
const detail = await entry.detail({
|
||||
id
|
||||
}, providerConfig.options)
|
||||
imageDetail = Object.assign(imageDetail, detail)
|
||||
} catch (e) {
|
||||
return {
|
||||
errCode: 500,
|
||||
errMsg: e.message
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
const response = await uniCloud.httpclient.request(url, {
|
||||
streaming: !isAliyun,
|
||||
timeout: 600000
|
||||
})
|
||||
|
||||
if (response.status !== 200) {
|
||||
return {
|
||||
errCode: response.status,
|
||||
errMsg: '上传失败'
|
||||
}
|
||||
}
|
||||
|
||||
// 未获取到文件大小时,尝试从响应头中获取
|
||||
if (!imageDetail.size && response.headers['content-length']) {
|
||||
imageDetail.size = Number(response.headers['content-length'])
|
||||
}
|
||||
|
||||
const res = await uniCloud.uploadFile({
|
||||
cloudPath: `uni-media-library/${Date.now()}.${imageDetail.fileType}`,
|
||||
fileContent: isAliyun ? response.data: response.res
|
||||
})
|
||||
|
||||
return {
|
||||
errCode: 0,
|
||||
data: {
|
||||
fileID: res.fileID,
|
||||
detail: imageDetail
|
||||
}
|
||||
}
|
||||
}
|
||||
+33
@@ -0,0 +1,33 @@
|
||||
const config = require('../../common/config')
|
||||
|
||||
module.exports = async function (params) {
|
||||
const {keyword = '', page = 1, pageSize = 20, provider = ''} = params
|
||||
const imageLibraryProviders = config.imageLibraryProviders || []
|
||||
const providerConfig = imageLibraryProviders.find(item => item.provider === provider)
|
||||
|
||||
if (!providerConfig) {
|
||||
return {
|
||||
errCode: 400,
|
||||
errMsg: `Provider ${provider} is not found`
|
||||
}
|
||||
}
|
||||
|
||||
const entry = require(providerConfig.entryFilePath)
|
||||
|
||||
try {
|
||||
const res = await entry.search({
|
||||
keyword,
|
||||
page,
|
||||
pageSize
|
||||
}, providerConfig.options)
|
||||
return {
|
||||
errCode: 0,
|
||||
data: res
|
||||
}
|
||||
} catch (e) {
|
||||
return {
|
||||
errCode: 500,
|
||||
errMsg: e.message
|
||||
}
|
||||
}
|
||||
}
|
||||
+7
@@ -0,0 +1,7 @@
|
||||
module.exports = {
|
||||
report: require('./report'),
|
||||
deleteMedia: require('./delete-media'),
|
||||
getImageLibraryProviders: require('./image-library/get-providers'),
|
||||
searchImageLibrary: require('./image-library/search'),
|
||||
uploadImage: require('./image-library/internal-uploader'),
|
||||
}
|
||||
+38
@@ -0,0 +1,38 @@
|
||||
const db = uniCloud.database()
|
||||
|
||||
async function report (params) {
|
||||
const {
|
||||
src,
|
||||
cover,
|
||||
type,
|
||||
originalName,
|
||||
fileType,
|
||||
size,
|
||||
resolution = {},
|
||||
duration,
|
||||
uploadUser,
|
||||
description,
|
||||
alt
|
||||
} = params
|
||||
|
||||
await db.collection('uni-media-library').add({
|
||||
src,
|
||||
cover,
|
||||
type,
|
||||
originalName,
|
||||
fileType,
|
||||
size,
|
||||
resolution,
|
||||
duration,
|
||||
uploadUser,
|
||||
description,
|
||||
alt,
|
||||
createDate: Date.now()
|
||||
})
|
||||
|
||||
return {
|
||||
errCode: 0
|
||||
}
|
||||
}
|
||||
|
||||
module.exports = report
|
||||
Reference in New Issue
Block a user