diff --git a/package.json b/package.json
index b911cd6..b3d5e33 100644
--- a/package.json
+++ b/package.json
@@ -48,7 +48,8 @@
"vue-json-pretty": "2.4.0",
"vue-router": "4.4.5",
"vue-types": "5.1.3",
- "vxe-table": "4.5.22"
+ "vxe-table": "4.5.22",
+ "hash-wasm": "^4.12.0"
},
"devDependencies": {
"@eslint/js": "9.15.0",
diff --git a/src/components/PartUpload/index.vue b/src/components/PartUpload/index.vue
new file mode 100644
index 0000000..d1bd99b
--- /dev/null
+++ b/src/components/PartUpload/index.vue
@@ -0,0 +1,104 @@
+
+
+
+
+
diff --git a/src/utils/partUpload.ts b/src/utils/partUpload.ts
new file mode 100644
index 0000000..b524264
--- /dev/null
+++ b/src/utils/partUpload.ts
@@ -0,0 +1,74 @@
+import axios from 'axios';
+
+export const httpInstance = axios.create({
+ baseURL: '/api',
+ timeout: 10000
+});
+
+export interface MultipartBo {
+
+ /**
+ * 分片类型(必传)
+ */
+ ossStatus: 'initiate' | 'upload' | 'query' | 'complete';
+
+ /**
+ * 文件原名(分片初始化的时候使用)
+ */
+ originalName?: string;
+
+ /**
+ * 用于分片上传任务的 Upload ID
+ * 在初始化分片上传时获取,并在后续的分片上传和完成上传过程中使用
+ */
+ uploadId?: string;
+
+ /**
+ * 分片编号(从1开始递增)
+ */
+ partNumber?: number;
+
+ /**
+ * 内容的 MD5 摘要
+ * initiate初始化需要第一片的md5值(或者直接计算整体的md5)用来判断断点续传,以及秒传
+ */
+ md5Digest?: string;
+
+ /**
+ * 最大返回的分片数(默认为1000,最大值1000)
+ * 最多分片一万,一次性返回会造成前端性能问题,需要前端多次校验
+ */
+ maxParts?: number;
+
+ /**
+ * 分片编号的标记,用于分页查询(默认为0,表示从第一个分片开始查询)
+ */
+ partNumberMarker?: number;
+
+ partUploadList?: PartUploadList[];
+}
+
+export interface PartUploadList {
+
+ /**
+ * 分片编号(从1开始递增)
+ */
+ partNumber: number;
+
+ /**
+ * 从上传部分的内容生成的实体标签
+ */
+ entryTag: string;
+}
+
+export interface Data {
+ filename: string;
+ originalName: string;
+ md5Digest: string;
+ uploadId: string;
+ suffix: string;
+}
+
+export function multipartUpload(multipartBo: MultipartBo) {
+ return httpInstance.post('/resource/oss/multipart', multipartBo);
+}