| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849 |
- import { CDN_CACHE_KEY } from '@/settings/enums';
- import { DEFAULT_CDN_URL, UPLOAD } from '@/settings/siteSetting';
- import { isString } from './is.js';
- /** 获取文件CDN前缀 */
- export async function getCdnUrl() {
- try {
- const res = 'xxxxxxxxxxx';
- uni.setStorageSync('CDN_UPLOAD', res.data + '/');
- } catch (error) {
- console.log(error);
- }
- }
- /**
- * 输出完整文件地址
- * @param url
- */
- export function getFileUrl(url, planB = false) {
- if (url === '') return url;
- if (!isString(url)) return url;
- // 特殊处理,/static 开头 是本地文件
- if (url.indexOf('/static') === 0) return url;
- if (/^(https|http):\/\//i.test(url) || /^(data|http|https):/i.test(url) || url.indexOf('http://') >= 0 || url.indexOf('https://') >= 0) return url;
- // 如果第一位非 / 开头 补全指定目录前缀
- if (!/^\//.test(url) && !planB) url = `/orderFood/${url}`;
- url = url.replace(/\.+\//gi, '/').replace(/~+/gi, '/').replace(/\/+/gi, '/').replace(/\//, '').replace(/\\/g, '/');
- // CDN 路径 增加回退逻辑,防止当异步数据没有返回时,页面已经开始加载数据,导致图片无法正常显示
- let prefix = uni.getStorageSync(CDN_CACHE_KEY) || DEFAULT_CDN_URL;
- if (planB) prefix = uni.getStorageSync('CDN_UPLOAD') || UPLOAD;
- // ios老版本不支持webp
- const systemInfo = uni.getSystemInfoSync();
- const platform = systemInfo.platform;
- if (url.split('.')[1] == 'webp' && platform == 'ios') {
- if (systemInfo.osVersion.split('.')[0] < '18' || (systemInfo.osVersion.split('.')[0] == '18' && systemInfo.osVersion.split('.')[1] < '2')) {
- url = url.split('.')[0] + '.jpg';
- }
- }
- return prefix + url;
- }
|