优化阿里云oss上传失败重试

dependabot/npm_and_yarn/fir_admin/path-parse-1.0.7
youngS 4 years ago
parent 7599e5f3a2
commit d8b02a74ab
  1. 65
      fir_client/src/utils/index.js

@ -127,7 +127,7 @@ export function dataURLtoFile(dataurl, filename) {//将base64转换为文件
export function uploadaliyunoss(file, certinfo, app, successcallback, processcallback) { export function uploadaliyunoss(file, certinfo, app, successcallback, processcallback) {
let token = certinfo.upload_token; let token = certinfo.upload_token;
let client = new app.oss({ let uploadFileClient = new app.oss({
endpoint: token.endpoint, endpoint: token.endpoint,
accessKeyId: token.access_key_id, accessKeyId: token.access_key_id,
accessKeySecret: token.access_key_secret, accessKeySecret: token.access_key_secret,
@ -135,7 +135,9 @@ export function uploadaliyunoss(file, certinfo, app, successcallback, processcal
bucket: token.bucket bucket: token.bucket
}); });
// eslint-disable-next-line no-unused-vars
let retryCount = 0;
let retryCountMax = 5;
let currentCheckpoint; let currentCheckpoint;
const progress = async function progress(p, checkpoint) { const progress = async function progress(p, checkpoint) {
currentCheckpoint = checkpoint; currentCheckpoint = checkpoint;
@ -146,28 +148,45 @@ export function uploadaliyunoss(file, certinfo, app, successcallback, processcal
processcallback(Math.floor(p * 100)); processcallback(Math.floor(p * 100));
}; };
const options = {
progress, const uploadFile = function uploadFile(client) {
partSize: 1024 * 1024 / 4, if (!uploadFileClient || Object.keys(uploadFileClient).length === 0) {
// meta: { uploadFileClient = client;
// year: 2017, }
// people: 'test',
// }, const options = {
}; progress,
client.multipartUpload(certinfo.upload_key, file, options).then((res) => { parallel: 10,
// eslint-disable-next-line no-console partSize: 1024 * 1024,
// console.log('upload success: %j', res); timeout: 180000,
successcallback(res); };
currentCheckpoint = null;
}).catch((err) => { if (currentCheckpoint) {
// eslint-disable-next-line no-console options.checkpoint = currentCheckpoint;
console.error(err); }
app.$message({ return uploadFileClient.multipartUpload(certinfo.upload_key, file, options).then((res) => {
message: file.name + '上传失败,请刷新页面重试', successcallback(res);
type: 'error', currentCheckpoint = null;
duration: 0 }).catch((err) => {
// eslint-disable-next-line no-console
console.error(err);
//retry
if (retryCount < retryCountMax) {
retryCount++;
// eslint-disable-next-line no-console
console.error("retryCount : " + retryCount);
uploadFile('')
} else {
app.$message({
message: file.name + '上传失败,请刷新页面重试',
type: 'error',
duration: 0
});
}
}); });
}); };
uploadFile(uploadFileClient)
} }

Loading…
Cancel
Save