oss-upload.js
Version:
The browser directly uploads files to oss
86 lines (72 loc) • 2.75 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = oss_upload;
var _rxjs = require("rxjs");
var _fileMd = require("./fileMd5");
var OSS = require("ali-oss");
var ossClient; // 小文件put上传
function put_upload(_ossConfig, _observer) {
ossClient.put("".concat(_ossConfig.folder, "/").concat(_ossConfig.filename), _ossConfig.fileObj).then(function (uploadResponse) {
if (uploadResponse.res.status === 200) {
_observer.next({
status: 200,
data: uploadResponse.url.replace(/http:/, "https:")
});
} else {
_observer.next({
status: 400,
data: ""
});
}
});
} // 大文件分片上传
function multipart_upload(_ossConfig, _observer) {
ossClient.multipartUpload("/".concat(_ossConfig.folder, "/").concat(_ossConfig.filename), _ossConfig.fileObj, {
progress: function progress(_percent) {
_observer.next({
status: 300,
data: _percent * 100
});
},
partSize: 5 * 1024 * 1024
}).then(function (uploadResponse) {
if (uploadResponse.res.status === 200) {
_observer.next({
status: 200,
data: "".concat(_ossConfig.bucket).concat(uploadResponse.name)
});
} else {
_observer.next({
status: 400,
data: ""
});
}
});
} // 传入oss配置、oss bucket、oss目标文件夹、File对象、自定义文件名
function oss_upload(inputObj) {
return _rxjs.Observable.create(function (observer) {
var ossConfig = {
license: inputObj.license,
bucket: "https://".concat(inputObj.license.bucket, ".").concat(inputObj.license.region, ".aliyuncs.com"),
folder: inputObj.folder,
fileObj: inputObj.fileObj,
filename: inputObj.fileName
};
try {
ossClient = new OSS(inputObj.license);
} catch (e) {
console.error("Error: oss init file,please check your oss config");
} // 若未传入文件名,则将文件的MD5值设为文件名
if (!inputObj.hasOwnProperty('fileName') || !inputObj.fileName) {
(0, _fileMd.fileMd5)(inputObj.fileObj, function (err, md5Result) {
ossConfig.filename = "".concat(md5Result, ".").concat(inputObj.hasOwnProperty('fileExtension') && inputObj.fileExtension ? inputObj.fileExtension : inputObj.fileObj.type.slice(inputObj.fileObj.type.search(/\//) + 1)); // 根据文件大小选择上传方式
inputObj.fileObj.size < 20 * 1024 * 1024 ? put_upload(ossConfig, observer) : multipart_upload(ossConfig, observer);
});
} else {
// 根据文件大小选择上传方式
inputObj.fileObj.size < 20 * 1024 * 1024 ? put_upload(ossConfig, observer) : multipart_upload(ossConfig, observer);
}
});
}