UNPKG

oss-upload-browser

Version:
72 lines (68 loc) 2.17 kB
import { fileMd5 } from "./file-md5"; const OSS = require('ali-oss'); let ossClient; //小文件上传 const put_upload = (_ossConfig, _resolve) => { ossClient.put(`${_ossConfig.folder}/${_ossConfig.filename}`, _ossConfig.fileObj) .then(uploadResponse => { if (uploadResponse.res.status === 200) { _resolve({ status: 200, data: uploadResponse.url.replace(/http:/, "https:") }); } else { _resolve({status: 400, data: ''}); }; }) } // 大文件分片上传 const multipart_upload = (_ossConfig, _resolve) => { ossClient.multipartUpload(`${_ossConfig.folder}/${_ossConfig.filename}`, _ossConfig.fileObj, { progress: p => { _resolve({ status: 300, data: p * 100 }); }, partSize: 5 * 1024 * 1024 }).then(uploadResponse => { if (uploadResponse.res.status === 200) { _resolve({ status: 200, data: `${_ossConfig.bucket}${uploadResponse.name}` }); } else { _resolve({status: 400, data: ''}); } }); } // 传入oss配置、oss bucket、oss目标文件夹、File对象 const ossUpload = inputObj => { return new Promise(resolve => { let ossConfig = { bucket: `https://${inputObj.license.bucket}.${inputObj.license.region}.aliyuncs.com`, folder: inputObj.folder, fileObj: inputObj.fileObj }; try { ossClient = new OSS(inputObj.license); } catch(err) { console.error("Error: oss init file,please check your oss config"); } // 将文件的MD5值设为文件名 fileMd5(inputObj.fileObj, (err, md5Result) => { try { if (err) throw err; ossConfig['filename'] = `${md5Result}.${inputObj.hasOwnProperty('extension') && inputObj.extension ? inputObj.extension : inputObj.fileObj.type.slice(inputObj.fileObj.type.search(/\//) + 1)}`; // 根据文件大小选择上传方式 inputObj.fileObj.size < 20 * 1024 * 1024 ? put_upload(ossConfig, resolve) : multipart_upload(ossConfig, resolve); } catch(err) { console.error(err); } }); }); } export default ossUpload;