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

59 lines
1.8 KiB
JavaScript

import { promisify } from './promisify';
export class Upload {
abortUpload(uploadId) {
return false;
}
abortAllUploads() {
}
getUploadStatus(uploadId) {
return 'not-found';
}
getActiveUploads() {
return [];
}
async uploadFile(options) {
const { file, name, uploadUrl, formData, isFilePath, method = "POST" } = options;
const isPut = method === "PUT";
if (isPut) {
if (isFilePath) {
return new Promise((resolve, reject) => {
const fs = wx.getFileSystemManager();
fs.readFile({
filePath: file,
encoding: 'binary',
success: res => {
resolve(global.fetch(uploadUrl, {
method: "PUT",
headers: {
'Content-Type': 'application/octet-stream',
},
body: res.data,
}));
},
fail: err => {
reject(err);
}
});
});
}
return global.fetch(uploadUrl, {
method: "PUT",
headers: {
'Content-Type': 'application/octet-stream',
},
body: file,
});
}
else {
const wxUploadFile = promisify(wx.uploadFile);
const result = await wxUploadFile({
url: uploadUrl,
filePath: file,
name: name || 'file',
formData: formData,
});
return result;
}
}
}