阿里云上传方法

//阿里云服务器的获取 后天提供的秘钥获取请求 第一步
export const getoss = () => {
  return inter({
    url: "/ossurl" //后台返回的oss地址
  });
};

// 上传图片到阿里云  图片
这是和之前暴露出来的方法,进行图片上传 第二步引入
//四个参数,文件内容,file[0] 原生 oss_msg值后台回去的到路径。这要另外发请求获取 ,name指的是传入到阿里云服务器的存放位置,也是后台给,最后一个回调函数的参数是成功的后的url地址
export const uploadPic = (file, oss_msg, name, fun) => {
  //封装的方法  直接调用
  return aliyun_oss({
    type: "upload",
    file: file, //图片
    // path: oss_msg.repair,
    path: name,
    oss_msg: oss_msg,
    success: function(data, img_url) {
      fun(img_url);
    },
    error: function(err) {
      alert("上传图片失败");
    }
  });
};

这里在使用uploadPic的时候,第三个参数,函数的参数就是img_url

下面单独封装的工具 在请求内,将该方法暴露给APi接口中,需要用到该方法处理文件内容
// 上传图片到OSS工具
export const aliyun_oss = data => {
  // 上传
  if (data.type == "upload") {
    // 图片名字 当前时间戳+四位随机字符串
    var timestamp = new Date().getTime();
    var img_name = timestamp + randomString(4);
    // 图片格式
    var img_extension = data.file.name.split(".")[1];
    // 图片路径和名字
    var store_as = data.path + img_name + "." + img_extension;

    var client = new OSS.Wrapper({
      region: data.oss_msg.path,
      accessKeyId: data.oss_msg.accessKeyId,
      accessKeySecret: data.oss_msg.accessKeySecret,
      bucket: data.oss_msg.bucketName,
      endpoint: data.oss_msg.endpoint
    });

    client.multipartUpload(store_as, data.file)
      .then(function(result) {
        var u = navigator.userAgent,
          app = navigator.appVersion;
        var isAndroid = u.indexOf("Android") > -1 || u.indexOf("Linux") > -1; //g
        var isIOS = !!u.match(/\(i[^;]+;( U;)? CPU.+Mac OS X/); //ios终端
        if (isAndroid) {
          //这个是安卓操作系统
          return data.success(result, result.res.requestUrls[0].split("?")[0]);
        } else if (isIOS) {
          //这个是ios操作系统
          return data.success(result, result.res.requestUrls[0].split("?")[0]);
        } else {
          return data.success(result, result.url);
        }
      })
      .catch(function(err) {
        return data.error(err);
      });

    // 删除
  } else if (data.type == "delete") {
    // alert(data.path);
    if (data.path != null && data.path != undefined) {
      // 删除之前的图片
      var client = new OSS.Wrapper({
        region: data.oss_msg.path,
        accessKeyId: data.oss_msg.accessKeyId,
        accessKeySecret: data.oss_msg.accessKeySecret,
        bucket: data.oss_msg.bucketName,
        endpoint: data.oss_msg.endpoint
      });
      var key = data.path.split(".com")[1];
      client.delete(key);
    }
  }

  // 随机字符串
  function randomString(len, charSet) {
    charSet =
      charSet ||
      "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";
    var randomString = "";
    for (var i = 0; i < len; i++) {
      var randomPoz = Math.floor(Math.random() * charSet.length);
      randomString += charSet.substring(randomPoz, randomPoz + 1);
    }
    return randomString;
  }
};

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值