Open ViYaYaYa opened 6 years ago
import Api from 'src/utils/api' export default async function uploader(files) { files = Array.prototype.slice.call(files) const data = new FormData() for (let i = 0; i < files.length; i++) { data.append('files', files[i]) } let { data: res } = await Api.post('/cloudStoreOp/uploadPic', data, { _RES_ORIGIN: true, _REQ_LOADING: true, headers: { 'content-type': 'multipart/form-data' } }) if (res && res.length) { const output = [] const dimensionParsers = [] function parserGenerator(url) { return new Promise(resolve => { const img = document.createElement('img') const dimension = { width: '', height: '' } img.onload = () => { dimension.width = img.width dimension.height = img.height resolve(dimension) } img.onerror = () => { resolve(dimension) } img.src = url }) } res.forEach((file, i) => { if (file && file.data) { const data = file.data const obj = { file: files[i], url: data['picUrl'], md5: data['fileMD5'], width: '', height: '' } output.push(obj) dimensionParsers.push(parserGenerator(data['picUrl']).then(dimension => { obj.width = dimension.width obj.height = dimension.height })) } }) const loadingHider = window._utils.message.loading() await Promise.all(dimensionParsers) loadingHider() return output } else { return Promise.reject(res) } }