当前位置: 首页 > news >正文

手机网站cms 开源网站专题制作

手机网站cms 开源,网站专题制作,建设银行论坛网站,ui设计师需要考什么证书基于ali-oss实现不同类型文件上传不同的bucket,并根据大小选择直接上传还是分片上传 1 配置OSS2 引入依赖3 上传核心代码4 文件回显 1 配置OSS 可以看阿里云文档 ps:记得配置跨域 2 引入依赖 pnpm install ali-oss -save3 上传核心代码 import OSS from "ali-oss"…

基于ali-oss实现不同类型文件上传不同的bucket,并根据大小选择直接上传还是分片上传

  • 1 配置OSS
  • 2 引入依赖
  • 3 上传核心代码
  • 4 文件回显

1 配置OSS

可以看阿里云文档
ps:记得配置跨域

2 引入依赖

pnpm install ali-oss -save

3 上传核心代码

import OSS from "ali-oss";
import dayjs from "dayjs"; // 引入时间组件
import { buildUUID } from "@pureadmin/utils";
import { getStsToken } from "@/api/common/oss";
const BUCKET_PREFIX = "XXX";
// 获取不同文件类型bucket
const OSS_BUCKET_OBJECT = {image: BUCKET_PREFIX + "-image",audio: BUCKET_PREFIX + "-audio",video: BUCKET_PREFIX + "-video1",application: BUCKET_PREFIX + "-file",other: BUCKET_PREFIX + "-upload"
};
// 分片的大小
const SHARD_SIZE = 5;
// 文件大小阈值,主要区分直接上传和分片上传
const FILE_SIZE_THRESHOLD = 50;
type configType = {accessKeyId: string;accessKeySecret: string;bucket: string;expiration: string;region: string;token: string;stsToken: string;
};
let config: configType = undefined;
// 对文件进行上传
export async function uploadFile(file, progressCallback = () => {}) {// progressCallback 三个参数 (进度, 断点信息, 返回值)// 校验传入的对象是否正确if (!file || Object.prototype.toString.call(file) !== "[object File]") {throw new Error("参数不正确");}// 根据约定和相关规则进行参数配置const ossConfig: configType = await getOssConfig();ossConfig.bucket = getBucket(file);ossConfig.stsToken = ossConfig.token;const environment = `/${import.meta.env.VITE_LOGOGRAM}`;const pathName = `${environment}/${dayjs().format("YYYY-MM-DD")}/`;const fileName = `${buildUUID()}.${file.name.split(".").at(-1)}`;// 实例化OSS对象const client = new OSS(ossConfig);try {const fileSize = file.size / 1024 / 1024;// 根据文件大小选择上传的方式if (fileSize > FILE_SIZE_THRESHOLD) {const option = {partSize: 1024 * 1024 * SHARD_SIZE,parallel: Math.ceil(fileSize / SHARD_SIZE),progress: progressCallback};const result = await client.multipartUpload(pathName + fileName,file,option);return `/${result.name}`;} else {const result = await client.put(pathName + fileName, file);return `/${result.name}`;}} catch (e) {return Promise.reject(e);}
}// 获取后端返回的临时凭证,并根据时间判断凭证是否过期
export async function getOssConfig() {if (config?.expiration && dayjs().isBefore(dayjs(config.expiration))) {return config;} else {const { data } = await getStsToken();config = data as configType;return data;}
}// 根据文件类型获取不同的bucket
function getBucket(file) {const bucket = OSS_BUCKET_OBJECT[file.type.split("/")[0]];if (bucket) return bucket;else return OSS_BUCKET_OBJECT["other"];
}

4 文件回显

// 访问协议
const AGREEMENT = "https://";
// 获取不同文件类型的访问地址
const SERVER_ADDRESS = {image: "img.xxx.xxx.com",audio: "audio.xxx.xxx.com",video: "video.xxx.xxx.com",application: "file.xxx.xxx.com",other: "upload.xxx.xxx.com"
};
export const imageRegex = RegExp(/(jpg|bmp|gif|ico|pcx|jpeg|tif|png|raw|tga)/);
export const audioRegex = RegExp(/(mp3|wav|flac|ogg|aac|wma)/);
export const videoRegex = RegExp(/(avi|wmv|mpeg|mp4|m4v|mov|asf|flv|f4v|rmvb|rm|3gp|vob)/
);
export const applicationRegex = RegExp(/(doc|docx|xls|xlsx|ppt|pptx|pdf|txt|apk|zip)/
);
export function preview(pathName) {const suffix = pathName.split(".").at(-1);let type = "other";if (imageRegex.test(suffix)) type = "image";if (audioRegex.test(suffix)) type = "audio";if (videoRegex.test(suffix)) type = "video";if (applicationRegex.test(suffix)) type = "application";return `${AGREEMENT}${SERVER_ADDRESS[type]}${pathName}`;
}
deoRegex.test(suffix)) type = "video";if (applicationRegex.test(suffix)) type = "application";return `${AGREEMENT}${SERVER_ADDRESS[type]}${pathName}`;
}
http://www.yayakq.cn/news/292836/

相关文章:

  • 简约型网站新增网站和新增接入
  • 十堰网站推广哪家专业江阴网站建设工作室
  • 沧州建网站东莞平面设计公司有哪些
  • wordpress文章大网站电动汽车排名前十名
  • 汕尾建设网站天津做优化的网站有多少家
  • 网站建设费用一年教育行业建设网站
  • 织梦手机网站怎么安装教程视频教程国内永久免费的crm系统软件
  • WordPress模板修改后无反应上海快速排名优化
  • 领券的网站怎么建设环保部网站建设项目验收方案
  • 网站怎么制作商城北京互联网公司50强
  • 建立网站如何推广石排仿做网站
  • 凡科网站网站建设进不去整合营销传播的六种方法
  • 怎么自己做网站卡扣制作社交网站
  • 红酒网站程序秦皇岛网站设计公司
  • 做的比较好的冷柜网站有哪些宁夏住房和建设厅网站
  • 网站推广的资源合作推广建设公司属于什么企业
  • 网站推广怎么弄做郑州的购物网站用什么名
  • 温州市鹿城区建设小学网站seo运营推广
  • 博达网站建设怎么建立下载哈尔滨建工建设集团
  • asp与sql网站建设wordpress哪个php版本好
  • 电子商务网站建设实验企业网站缺点
  • 网站建设在360属于什么类目软件开发详细设计文档
  • wordpress多站点 主题网站改版 大量旧页面
  • 网站策划内容有哪些建立网站时要采用一定的链接结构可采用的基本方式有
  • 网站 设计案例云县网站建设 云县网
  • 佛山网站定制开发高端网站建设有哪些
  • 网站建设企业推荐怎么做公司的网站宣传
  • 心理咨询网站深圳设计公司有多少家
  • 郑州便宜网站建设公司常见的建站工具
  • 韩国展厅设计网站自己做设计图的app