/*
上传文件工具类
*/
import {
FILE_CHUNK_SIZE
} from "@/config/global.js";
/**
* 文件切片(仅限APP端使用)
* @param {Object} path
* @returns {ok: true | false, ...}
*/
export const splitFile = function(path) {
// #ifdef APP-PLUS
return new Promise((resolve, reject) => {
plus.io.resolveLocalFileSystemURL(path, entry => {
entry.file(file => {
// 文件大小
const fileSize = file.size;
// 获取文件名字
const fileName = file.name;
let fileNameArr = fileName.split("\.");
// 获取文件后缀名
const suffix = fileNameArr[fileNameArr.length - 1];
// 切片数量
const chunks = Math.ceil(fileSize / FILE_CHUNK_SIZE);
// 定义切片数组
let chunkFile = [];
for(let i = 0; i < chunks; i++) {
let chunk = file.slice(i * FILE_CHUNK_SIZE, (i + 1) * FILE_CHUNK_SIZE);
chunkFile.push({
file: chunk,
fileSize,
suffix,
chunk: i,
chunkSize: FILE_CHUNK_SIZE,
chunks
})
}
return resolve({
data: chunkFile,
ok: true,
message: '文件切片成功!'
});
}, err => reject({ok: false, message: err}));
}, err => reject({ok: false, message: err}));
})
// #endif
// #ifndef APP-PLUS
return Promise.reject({ok: false, message: "非APP端不可使用该方法!"});
// #endif
}
- 发布:2023-03-04 11:57
- 更新:2023-03-15 17:58
- 阅读:337
产品分类: HTML5+
HBuilderX版本号: 3.7.3
手机系统: Android
手机系统版本号: Android 10
手机厂商: 小米
手机机型: 小米8
打包方式: 云端
示例代码:
操作步骤:
方法传递一个文件路径(path)和一个切片的大小(FILE_CHUNK_SIZE)即可
方法传递一个文件路径(path)和一个切片的大小(FILE_CHUNK_SIZE)即可
预期结果:
获取的是相应FILE_CHUNK_SIZE大小的碎片文件
获取的是相应FILE_CHUNK_SIZE大小的碎片文件
实际结果:
此时上传的是整个文件
此时上传的是整个文件
bug描述:
bug如题描述
1 个回复
DCloud_Android_ST
请附件提供一个完整示例demo