前端上传文件到阿里云oss服务器

最近做的项目用到了阿里云oss服务器,所以在此记录一下。
1.首先需要申请阿里云oss服务器,然后拿到相关的配置参数
2.然后在js文件中封装上传相关方法就可以了,此处用的layui的upload方法,通过日期创建文件目录和随机id防止图片存储重复。
3.记得要引入aliyun-oss-sdk.min.js。
直接上代码吧~

    let client = new OSS({
        region: 'oss-cn-beijing',
        accessKeyId: '',
        accessKeySecret: '',
        bucket: 'gel-file'
    });
   const headers = {
     // 指定该Object被下载时网页的缓存行为。
     // 'Cache-Control': 'no-cache', 
     // 指定该Object被下载时的名称。
     // 'Content-Disposition': 'oss_download.txt', 
     //Object生成时会创建相应的ETag ,ETag用于标识一个Object的内容。
     // 对于PutObject请求创建的Object,ETag值是其内容的MD5值。
     // 对于其他方式创建的Object,ETag值是基于一定计算规则生成的唯一值,但不是其内容的MD5值。
     //'ETag':'',
     // 指定PutObject操作时是否覆盖同名Object
     'x-oss-forbid-overwrite': true,
    }
   async function putObject(fileName, data, fileDir, dom, doneCallback, loading) {
     try {
         let curDate = formatDate(new Date());
         let result = await client.put(fileDir + '/' + curDate + '/'+ fileName, data, {
             headers
         });
         $(dom + "-span").removeClass("layui-hide").text(fileName).attr("title", fileName).attr("file", result.url);
         if (doneCallback) {
             doneCallback(result)
         }
         layer.msg('上传成功');
         layer.close(loading);
     } catch (e) {
         console.log(e);
     }
 }
  function uploadFile(dom, fileDir, doneCallback, ext) {
     var exts = 'pdf|bmp|jpg|jpeg|png|gif|webp|doc|docx';
     if (ext) {
         exts = ext
     }
     var uploadcom=upload.render({
         elem: dom,
         accept: 'file',
         multiple: true,
         url: '', 
         exts: exts,
         auto: false,
         choose: function (obj) {
             var loading = layer.load()
             obj.preview(function (index, file, result) {
                 console.log('file', file)
                 var fileName = file.name;
                 var suffix = fileName.split('.');
                 fileName = unique() + '.' + suffix[suffix.length - 1];
                 putObject(fileName, file, fileDir, dom, doneCallback, loading);
             });
             // 清空历史上传文件,解决choose只执行一次的问题!!!
             uploadcom.config.elem.next()[0].value = ''; 
         },
     });
 }
 //每次随机产生一个唯一的ID。
  function sId() {
      return (((1 + Math.random()) * 0x10000) | 0).toString(16).substring(1);
  }

  function unique() {
      return (sId() + sId() + "-" + sId() + "-" + sId() + "-" + sId() + "-" + sId() + sId() + sId());
  }
     // 时间戳转时间
 function formatDate(date, isTime) {
      var date = new Date(date);
      var YY = date.getFullYear() + '/';
      var MM = (date.getMonth() + 1 < 10 ? '0' + (date.getMonth() + 1) : date.getMonth() + 1) + '/';
      var DD = (date.getDate() < 10 ? '0' + (date.getDate()) : date.getDate());
      var hh = (date.getHours() < 10 ? '0' + date.getHours() : date.getHours()) + ':';
      var mm = (date.getMinutes() < 10 ? '0' + date.getMinutes() : date.getMinutes()) + ':';
      var ss = (date.getSeconds() < 10 ? '0' + date.getSeconds() : date.getSeconds());
      if (isTime) {
          return YY + MM + DD + " " + hh + mm + ss;
      } else {
          return YY + MM + DD;
      }
  }

版权声明:本文为applebadm原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
原文链接:https://blog.csdn.net/applebadm/article/details/123578215