UNPKG

vue-django

Version:

个人实验项目, 本框架的目标是借鉴并超越django admin的自动化思想, 实现UI前端的极简快速定制开发

79 lines (75 loc) 2.19 kB
/** * Created by denishuang on 2021/10/24. */ import {format} from 'date-fns' import {template} from 'lodash' import {getFileMd5Async} from '../../utils/file_md5' export function getFileNumber(fn) { let re = /(\d+)\./g let m = re.exec(fn) if (m) { return m[1] } } export function genFileNameContext (file, fnt, context) { let fn = file.name let ps = fn.split('.') let extName let fileName = fn let baseName = fn if (ps.length > 1) { extName = ps[ps.length - 1] baseName = fn.substr(0, fn.length - 1 - extName.length) } let d = new Date() let dateTime = format(d, 'YYYYMMDDHHmmssSSS') let ctx = { ...context, extName, fileName, baseName, dateTime, number: getFileNumber(fn) } return Promise.resolve(ctx).then(ctx => { if (fnt.includes('${md5}') || fnt.includes('${md5short}')) { return getFileMd5Async(file).then(md5 => { ctx.md5 = md5 ctx.md5short = ctx.md5.slice(0,6) return ctx }) } else { return ctx } }) } export function qcloudUpload (req, getAuthorization, options, context, fnt) { let file = req.file fnt = fnt || '${dateTime}.${extName}' return genFileNameContext(file, fnt, context).then(ctx => { file.uploadContext = ctx let fileName = template(fnt)(ctx) return new Promise((resolve, reject) => { import('cos-js-sdk-v5').then(module => { let TcCos = module.default let tcCos = new TcCos({ getAuthorization }) tcCos.putObject({ ...options, Key: fileName, Body: file, onProgress: function (info) { req.onProgress(info) } }, function (err, data) { if (err) { reject(err) } else { resolve(data) } }) }) }) }) }