minapp-fetch
Version:
153 lines (152 loc) • 6.15 kB
JavaScript
;
/*
* @Author: your name
* @Date: 2020-05-18 18:02:23
* @LastEditTime: 2020-06-06 08:58:58
* @LastEditors: Please set LastEditors
* @Description: In User Settings Edit
* @FilePath: /@ownpack/weapp/src/fetch/file/upload.ts
*/
Object.defineProperty(exports, "__esModule", { value: true });
const utils_1 = require("./utils/utils");
const constants_1 = require("./constants/constants");
const error_1 = require("./constants/error");
function fetchUpload(fileParams, metaData) {
let { BaaS_F, minapp, options } = utils_1.getBaaSF();
return new Promise((resolve, reject) => {
if (constants_1.PLATFORM_NAME_BAAS.indexOf(minapp) > -1) {
if (minapp === constants_1.PLATFORM_NAME.ZX_CLOUD) {
let MyFile = new BaaS_F.File();
MyFile.upload(fileParams, metaData).then((res) => {
// 上传成功
resolve(res);
}, (err) => {
// HError 对象
reject(err);
});
}
let MyFile = new BaaS_F.File();
MyFile.upload(fileParams, metaData).then((res) => {
// 上传成功
resolve(res);
}, (err) => {
// HError 对象
reject(err);
});
}
//MongoDB
if (constants_1.PLATFORM_NAME_MONGO_SERVER.indexOf(minapp) > -1) {
if (minapp === constants_1.PLATFORM_NAME.MONGODB) {
throw new Error(`minapp.upload ${error_1.METHOD_NOT_SUPPORT}`);
}
if (minapp === constants_1.PLATFORM_NAME.WX_WEAPP) {
let tempFileName = new Date().getTime() + fileParams.filePath.match(/\.[^.]+?$/)[0];
BaaS_F.uploadFile({
filePath: fileParams.filePath,
cloudPath: metaData.categoryName + '/' + (metaData.fileName ? metaData.fileName : tempFileName)
}).then(res => {
resolve(res);
}, (err) => {
reject(err);
});
}
if (minapp === constants_1.PLATFORM_NAME.WX_CLOUD) {
BaaS_F.uploadFile({
fileContent: fileParams.fileObj,
cloudPath: metaData.categoryName + '/' + metaData.fileName
}).then(res => {
resolve(res);
}, (err) => {
reject(err);
});
}
}
//webapi
if (minapp === constants_1.PLATFORM_NAME.ZX_WEBAPI) {
if (!options)
throw new Error(error_1.WEBAPI_OPTIONS_ERROR);
BaaS_F({
method: 'post',
url: `${options.RequestBase}/hserve/v2.1/upload/`,
headers: options.Header,
data: metaData
}).then((res) => {
let tempA = res.data;
let formdata = new FormData();
formdata.append('file', fileParams.fileObj);
BaaS_F({
method: 'post',
url: tempA.upload_url,
headers: {
'Content-Type': 'multipart/form-data',
},
data: {
authorization: tempA.authorization,
file: formdata,
policy: tempA.policy
}
}).then((res2) => {
let result = {
data: {
categories: {
id: metaData.categoryID,
name: metaData.categoryName
},
created_at: res2.data.time,
id: tempA.id,
mime_type: res2.data.mimetype,
name: tempA.name,
path: tempA.path,
size: res2.data.file_size
}
};
resolve(result);
}).catch((err) => {
reject(err);
});
}).catch((err) => {
reject(err);
});
}
//op 运营后台
if (minapp === constants_1.PLATFORM_NAME.ZX_OP) {
let params = {
fileObj: fileParams.fileObj,
filename: metaData.fileName,
categoryID: metaData.categoryID,
};
BaaS_F.post('https://cloud.minapp.com/userve/v2.1/upload/', {
filename: params.filename,
category_id: params.categoryID
}).then((res) => {
let temp = res.data;
let formData = new FormData();
formData.append('file', params.fileObj);
formData.append('policy', temp.policy);
formData.append('authorization', temp.authorization);
let axiosUp = require('axios');
axiosUp.post(temp.upload_url, formData, {
'headers': { 'Content-Type': 'multipart/form-data' },
}).then((res) => {
resolve({
data: {
path: temp.path,
id: temp.id,
name: temp.name,
cdn_path: temp.cdn_path,
created_at: temp.created_at,
}
});
}).catch((err) => {
reject(err);
});
}).catch((err) => {
reject(err);
});
}
if (constants_1.PLATFORM_ALL.indexOf(minapp) === -1) {
throw new Error(`minapp.upload ${error_1.METHOD_NOT_SUPPORT}`);
}
});
}
exports.default = fetchUpload;