封装直传阿里云存储文件上传控件(1)

简介: 封装直传阿里云存储文件上传控件(1)

image.png


image.png


image.png


1、前端先访问后台接口获取上传阿里云存储权限相关信息和文件编号信息
2、前端获取到权限信息之后将文件上至阿里云存储
3、前端上传完成之后 提示用户上传完成
4、阿里云存储将上传结果异步通知到后端接口
5、后端接口将该文件的上传信息入库保存

代码


前端代码


html代码


<table style="width: 70%;text-align:left" class="pull-left">
  <tr>
    <td rowspan="2">
      <div id="uploadImage">
        <div class="statusBar" style="display:none;">
          <div class="progress">
            <span class="text">0%</span>
            <span class="percentage"></span>
          </div>
          <div class="info"></div>
        </div>
        <div class="queueList" style="display: flex;width: 204px;">
          <img id="showImage" src="/static/images/yyzz.jpg">
        </div>
      </div>
    </td>
    <td style="padding-left:10px;padding-top:10px">
      <label>原件扫描上传,图片大小不超过5M,文件格式为jpg、jpeg</label>
      <div class="btns">
        <div id="filePicker"></div><div class="uploadBtn"></div>
        <input type="hidden" id="licenseImgUrl" name="licenseImgUrl"/>
      </div>
    </td>
  </tr>
</table>


引用的资源文件


<link rel="stylesheet" type="text/css" href="/static/common/webuploader.css"/>
<link rel="stylesheet" type="text/css" href="/static/common/customerUploader-shiming.css"/>
<script src="/static/common/webuploader.js"></script>
<script type="text/javascript" src="/static/common/crypto1/hmac/hmac.js"></script>
<script type="text/javascript" src="/static/common/crypto1/crypto/crypto.js"></script>
<script type="text/javascript" src="/static/common/crypto1/sha1/sha1.js"></script>
<script type="text/javascript" src="/static/common/base64.js"></script>
<script type="text/javascript" src="/static/common/upload.js"></script>


js代码


<script>
  var getExplorer = (function() {
    var explorer = window.navigator.userAgent,
        compare = function(s) { return (explorer.indexOf(s) >= 0); },
        ie11 = (function() { return ("ActiveXObject" in window) })();
    if (compare("MSIE") || ie11) { return 'ie'; }
    else if (compare("Firefox") && !ie11) { return 'Firefox'; }
    else if (compare("Chrome") && !ie11) { return 'Chrome'; }
    else if (compare("Opera") && !ie11) { return 'Opera'; }
    else if (compare("Safari") && !ie11) { return 'Safari'; }
  })()
  $(function(){
    var $ = jQuery,
        $wrap = $('#uploadImage'),
        // 图片容器
        $queue = $('<ul class="filelist"></ul>').appendTo( $wrap.find('.queueList') ),
        // 状态栏,包括进度和控制按钮
        $statusBar = $wrap.find('.statusBar'),
        // 文件总体选择信息。
        $info = $statusBar.find('.info'),
        // 上传按钮
        $upload = $wrap.find('.uploadBtn'),
        // 没选择文件之前的内容。
        $placeHolder = $wrap.find('img'),
        // 总体进度条
        // $progress = $statusBar.find('.progress').hide(),
        // 添加的文件数量
        fileCount = 0,
        // 添加的文件总大小
        fileSize = 0,
        // 优化retina, 在retina下这个值是2
        ratio = window.devicePixelRatio || 1,
        // 缩略图大小
        thumbnailWidth = 1000 * ratio,
        thumbnailHeight = 800 * ratio,
        // thumbnailBigWidth = 600 * ratio,
        // thumbnailBigHeight = 400 * ratio,
        // 可能有pedding, ready, uploading, confirm, done.
        state = 'pedding',
        // 所有文件的进度信息,key为file id
        percentages = {},
        supportTransition = (function(){
          var s = document.createElement('p').style,
              r = 'transition' in s ||
                  'WebkitTransition' in s ||
                  'MozTransition' in s ||
                  'msTransition' in s ||
                  'OTransition' in s;
          s = null;
          return r;
        })(),
        // WebUploader实例
        uploader;
    var objdata = {};
    if ( !WebUploader.Uploader.support() ) {
      alert( 'Web Uploader 不支持您的浏览器!如果你使用的是IE浏览器,请尝试升级 flash 播放器');
      throw new Error( 'WebUploader does not support the browser you are using.' );
    }
    // 实例化
    uploader = WebUploader.create({
      auto:true,
      pick: {
        id: '#filePicker',
        label: '点击选择图片'
      },
      // dnd: '#uploadImage .queueList',
      // paste: document.body,
      accept: {
        title: 'Images',
        extensions: 'jpg,jpeg',
        mimeTypes: 'image/jpg,image/jpeg'
      },
      // swf文件路径
      swf: "/static/common/Uploader.swf",
      disableGlobalDnd: false,
      chunked: false,
      // server: 'http://webuploader.duapp.com/server/fileupload.php',
      // server: 'http://2betop.net/fileupload.php',
      method: 'POST',
      server: 'xxxxx',//这里要换成你自己的后台接口访问地址
      fileNumLimit: 1,
      threads:1,
      fileSizeLimit: 1*5 * 1024 *1024,    // 文件上传总大小
      fileSingleSizeLimit: 5 * 1024 * 1024,    // 单个文件大小
      duplicate:true,             //允許重複上傳
      compress:false,
      thumb: {
        allowMagnify: false,
        quality: 85,
        crop:false,
        type: 'image/jpeg'
      },
      resize:false
    });
    uploader.on('uploadBeforeSend',function (obj,data,headers) {
      $.ajax({
        type: "post",
        url: "${ctx}/upload/getOssSign",
        data:{
          type:4,
          originName:obj.file.name
        },
        async: false,
        success: function (re) {
          var r = JSON.parse(re);
          objdata.upfileEndPoint = r.endpoint;
          objdata.bucketName = r.bucketName;
          objdata.ossSign = {
            'key': r.dir,
            'policy': r.policy,
            'OSSAccessKeyId': r.accessid,
            'success_action_status': '200',
            'signature': r.signature,
            'callback':r.callback,
            'guid':r.guid
          }
        }
      });
相关文章
|
2月前
|
API
在阿里云RPA中,你可以使用"SetForegroundWindow"函数来将SAP控件置顶
【2月更文挑战第28天】 在阿里云RPA中,你可以使用"SetForegroundWindow"函数来将SAP控件置顶
25 1
|
2月前
|
存储 调度 块存储
阿里云连续两年斩获全球存储顶会FAST最佳论文
阿里云连续两年斩获全球存储顶会FAST最佳论文
338 0
|
2月前
|
弹性计算 前端开发 小程序
微信小程序上传文件至阿里云OSS直传(java后端签名+前端直传)
当前的通用文件上传方式是通过前端上传到服务器,再由服务器转存至对象存储。这种方式在处理小文件时效率尚可,但大文件上传因受限于服务器带宽,速度较慢。例如,一个100MB的文件在5Mbps带宽的阿里云ECS上上传至服务器需160秒。为解决此问题,可以采用后端签名的方式,使微信小程序直接上传文件到阿里云OSS,绕过服务器中转。具体操作包括在JAVA后端引入相关依赖,生成签名,并在微信小程序前端使用这个签名进行文件上传,注意设置正确的请求头和formData参数。这样能提高大文件上传的速度。
|
1月前
|
开发工具 对象存储
阿里云OSS文件上传
阿里云OSS文件上传
76 0
|
2月前
|
存储 调度 块存储
十二年磨一剑:三代架构演进,打造高性能、低成本的块存储!
上周,全球计算机存储顶会USENIX FAST 2024 在美国加州圣克拉拉召开,继去年获得国内首个FAST最佳论文奖后,凭借在分布式块存储上的创新,阿里云新作再次斩获FAST大会最佳论文奖。这也是国内唯一一家连续两年获得FAST最佳论文奖的科技公司。
104656 104
|
2月前
|
存储 弹性计算 NoSQL
阿里云突发!上百种云产品大规模降价,云服务器、云数据库、存储价格下调
阿里云突发!上百种云产品大规模降价,云服务器、云数据库、存储价格下调
106 2
|
2月前
|
存储 弹性计算 NoSQL
阿里云降价背后的“焦虑”,云服务器、数据库、存储百种云产品大降价!
阿里云降价背后的“焦虑”,云服务器、数据库、存储百种云产品大降价!
119 0
|
2月前
|
存储 弹性计算 NoSQL
2024阿里云服务器、数据库、存储等全线产品平均降价 20%
2024年最新阿里云降价,立即生效!百款产品直降,平均降幅20%,阿里云希望通过此次大规模降价,让更多企业和开发者用上先进的公共云服务,加速云计算在中国各行各业的普及和发展。这次降价包括云服务器ECS、对象存储OSS、云数据库都降价了,真降价,直降价:百款产品直降,平均降幅20%,阿里云百科分享阿里云2024年降价信息汇总表
|
3天前
|
弹性计算 运维 监控
解密阿里云弹性计算:探索云服务器ECS的核心功能
阿里云ECS是核心计算服务,提供弹性云服务器资源,支持实例按需配置、集群管理和监控,集成安全防护,确保服务稳定、安全,助力高效业务运营。
28 0
|
12天前
|
存储 弹性计算 固态存储
阿里云服务器CPU内存配置详细指南,如何选择合适云服务器配置?
阿里云服务器配置选择涉及CPU、内存、公网带宽和磁盘。个人开发者或中小企业推荐使用轻量应用服务器或ECS经济型e实例,如2核2G3M配置,适合低流量网站。企业用户则应选择企业级独享型ECS,如通用算力型u1、计算型c7或通用型g7,至少2核4G配置,公网带宽建议5M,系统盘可选SSD或ESSD云盘。选择时考虑实际应用需求和性能稳定性。
124 6