基于ali-oss上传文件至服务器获取链接地址的封装

125 阅读1分钟

代码记录

const OSS = require('ali-oss');

const endpoint = 'https:oss对外服务的访问域名.com'; 
const accessKeyId = '访问身份验证中用到用户标识'; 
const accessKeySecret = ' 用户用于加密签名字符串和oss用来验证签名字符串的密钥'; 
const bucket = 'oss的存储空间'; 

/**
 * 上传
 */
function uploadFun(opction) {
  return new Promise((resolve, reject) => {
    let { file } = opction;

    const client = new OSS({
      endpoint,
      accessKeyId,
      accessKeySecret,
      bucket,
    });

    let name = reFileName();

    client
      .put(name, file)
      .then((res) => {
        let url = res.url;
        resolve(url);
      })
      .catch((err) => {
        console.log(err);
        reject();
        alert('上传失败');
      });
  });
}

/**
 * 生成名字(guid+毫秒级时间戳+‘gushitong’字符串)
 */
reFileName(fileName) {
                    // 取文件后缀
                    let suffixName = fileName;
                    if (fileName.lastIndexOf(".") != -1) {
                        suffixName = fileName.substring(fileName.lastIndexOf("."));
                    }
                    let name = `meetingAdminFile/${getDate()}/admin${guid()}${parseInt(new Date().getTime())}${suffixName}`;
                    return name;
                }

/**
 * 获取guid
 */
function guid() {
  return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function (c) {
    var r = (Math.random() * 16) | 0,
      v = c == 'x' ? r : (r & 0x3) | 0x8;
    return v.toString(16);
  });
}

/**
 * 获取年月日
 */
function getDate() {
  var myDate = new Date();
  myDate.getFullYear(); //获取完整的年份(4位,1970-????)
  myDate.getMonth(); //获取当前月份(0-11,0代表1月)
  myDate.getDate(); //获取当前日(1-31)
  var day = myDate.getDate() >= 10 ? myDate.getDate() : '0' + myDate.getDate();
  var month =
    myDate.getMonth() + 1 >= 10
      ? myDate.getMonth() + 1
      : '0' + (myDate.getMonth() + 1);
  myDate.toLocaleDateString(); //获取当前日期
  return myDate.getFullYear() + '-' + month + '-' + day;
}

export default {
  uploadFun,
};