53 lines
2.0 KiB
JavaScript
53 lines
2.0 KiB
JavaScript
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;
|
||
}
|
||
}
|
||
}
|