oak-frontend-base/es/utils/upload.mp.js

53 lines
2.0 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

import { promisify } from './promisify';
export class Upload {
async uploadFile(file, name, uploadUrl, formData, autoInform, getPercent, uploadId, // 新增上传任务ID用于中断特定上传
method = "POST") {
const isPut = method === "PUT";
if (isPut) {
return new Promise((resolve, reject) => {
const fs = wx.getFileSystemManager();
fs.readFile({
filePath: file,
success: (fileRes) => {
// 使用 PUT 方法上传
wx.request({
url: uploadUrl,
method: 'PUT',
data: fileRes.data, // ArrayBuffer 格式
header: {
'Content-Type': 'image/jpeg', // 根据实际文件类型设置
},
success: (uploadRes) => {
if (uploadRes.statusCode === 200) {
resolve(uploadRes);
}
else {
reject(new Error(`HTTP Error: ${uploadRes.statusCode}`));
}
},
fail: (err) => {
console.error('上传失败', err);
reject(err);
}
});
},
fail: (err) => {
console.error('读取文件失败', err);
reject(err);
}
});
});
}
else {
const wxUploadFile = promisify(wx.uploadFile);
const result = await wxUploadFile({
url: uploadUrl,
filePath: file,
name: name || 'file',
formData: formData,
});
return result;
}
}
}