UNPKG

wiz-frameworks

Version:

wizlong react framework

205 lines (183 loc) 8.67 kB
'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; /** * ossFileUtils oss文件工具类 * @author mll * @date 2020-04-27 */ var _tool = require('../../tool'); var _aliOss = require('ali-oss'); var _aliOss2 = _interopRequireDefault(_aliOss); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } var Session = _tool.utils_tool.Session; /** * 根据后缀获取oss完整地址 * @param {*} suffix */ var getOssUrlBySuffix = function getOssUrlBySuffix(suffix) { var access = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true; var process = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : ''; if (!suffix && suffix === '') { return ''; } if (access && suffix) { var ali = Session.get(constants.env.sys_ali_key); if (ali) { var oss = new _aliOss2['default']({ accessKeyId: Base64.decode(ali['akId']), accessKeySecret: Base64.decode(ali['aks']), endpoint: constants.env.sys_ali_endpoint, bucket: constants.env.sys_ali_bucket, stsToken: ali['stoken'] }); return oss.signatureUrl(suffix, { expires: 3600, method: 'GET', process: process }); } else { return ''; } } return 'http://' + constants.env.sys_ali_bucket + '.' + constants.env.sys_ali_region + '.aliyuncs.com/' + suffix; }; var getOssFile = function getOssFile(fileId, fileOriginalName, fileType, fileSize, fileUri) { var access = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : true; var url = void 0; var uploadWay = constants.env.sys_upload_way || 'Oss'; if (uploadWay === 'S3') { url = getS3FileById(fileId, fileType); } else { url = getOssUrlBySuffix(fileUri, access); } return { fileId: fileId, fileNewName: new Date().getTime(), fileOriginalName: fileOriginalName, fileType: fileType, name: fileOriginalName, percent: 100, size: fileSize, status: "done", sysUrl: fileUri, thumbUrl: url, url: url }; }; /** * 获取图片地址,支持处理缩放、水印、格式转换等各种的方法 * 详见:https://help.aliyun.com/document_detail/64054.html?spm=a2c4g.11186623.6.1331.4996412fvtw9tZ * @param {*} fileParams * @param {*} imgHandle */ var getOssImgFile = function getOssImgFile() { var fileParams = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; var imgHandle = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; var fileId = fileParams.fileId, fileOriginalName = fileParams.fileOriginalName, fileType = fileParams.fileType, fileSize = fileParams.fileSize, fileUri = fileParams.fileUri, access = fileParams.access; var process = ''; if (imgHandle && Object.keys(imgHandle).length) { process = 'image'; Object.keys(imgHandle).forEach(function (key) { process += '/' + key + ',' + imgHandle[key]; }); } var url = getOssUrlBySuffix(fileUri, access, process); return { fileId: fileId, fileNewName: new Date().getTime(), fileOriginalName: fileOriginalName, fileType: fileType, name: fileOriginalName, percent: 100, size: fileSize, status: "done", sysUrl: fileUri, thumbUrl: url, url: url }; }; /** * 根据resize获取oss图片 * @param {*} fileParams * @param resize内参数开始 * @param {*} m * 指定缩略的模式: lfit:等比缩放,限制在指定w与h的矩形内的最大图片。 mfit:等比缩放,延伸出指定w与h的矩形框外的最小图片。 fill:固定宽高,将延伸出指定w与h的矩形框外的最小图片进行居中裁剪。 pad:固定宽高,缩略填充。 fixed:固定宽高,强制缩略。 * @param {*} w 指定目标缩略图的宽度。 * @param {*} h 指定目标缩略图的高度。 * @param {*} l 指定目标缩略图的最长边。 * @param {*} s 指定目标缩略图的最短边。 * @param {*} limit 指定当目标缩略图大于原图时是否处理。值是 1 表示不处理;值是 0 表示处理。 * @param {*} color 当缩放模式选择为 pad(缩略填充)时,可以选择填充的颜色(默认是白色)参数的填写方式:采用 16 进制颜色码表示,如 00FF00(绿色)。 * @param resize内参数结束 * @param {*} isJpg 格式转换,默认转换成jpg */ var getOssImgResize = function getOssImgResize() { var fileParams = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; var resize = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; var isJpg = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : true; var _fileParams = _extends({ access: true }, fileParams); return getOssImgFile(_fileParams, { resize: _splicing(resize), format: isJpg ? 'jpg' : '' }); }; /** * 根据resize获取oss图片的地址 * @param {*} fileParams * @param {*} resize * @param {*} isJpg */ var getOssImgResizeUrl = function getOssImgResizeUrl(fileUri) { var resize = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; var isJpg = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : true; return getOssImgResize({ fileUri: fileUri, access: true }, resize, isJpg)['thumbUrl']; }; var _splicing = function _splicing() { var s = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; var r = ''; Object.keys(s).forEach(function (k) { if (s[k]) { r += k + '_' + s[k] + ','; } }); if (r && r.length) { r.substring(0, r.length - 1); } return r; }; var getS3FileById = function getS3FileById(fileId) { var mimeType = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : ''; var maxPixel = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : constants.env.image_max_pixel; var url = ''; if (getOssFilePath) { url = getOssFilePath(fileId); } else if (constants.urls.kUrlLinkPath) { url = constants.urls.kUrlLinkPath + '/' + fileId; } else { var filePathHeader = constants.env.env_host && constants.env.env_host !== '' ? constants.env.env_host : window.location.origin + '/link'; url = filePathHeader + '/link-server/' + fileId; } var type = void 0; ['image', 'jpg', 'png', 'jpeg', 'ipeg', 'gif', 'bmp'].forEach(function (item) { if (mimeType.indexOf(item) !== -1) type = 'img'; }); if (type === 'img') { var pixel = maxPixel && maxPixel > 1 ? Math.min(maxPixel, 4096) : 600; url += '?process=image/resize,w_' + pixel + ',h_' + pixel; } return url; }; exports['default'] = { getOssUrlBySuffix: getOssUrlBySuffix, getOssFile: getOssFile, getOssImgResize: getOssImgResize, getOssImgFile: getOssImgFile, getOssImgResizeUrl: getOssImgResizeUrl, getS3FileById: getS3FileById }; module.exports = exports['default'];