zoukankan      html  css  js  c++  java
  • 阿里OSS ajax方式 web直传

    部分js代码

    send_request = function(){//这是从后台获取认证策略等信息。
      var htmlobj=$.ajax({url:root+"/service/policyInfoController/policy",async:false});
      return htmlobj.responseText;
    };
    
    function get_signature()//读取获得的参数
    {
    //可以判断当前expire是否超过了当前时间,如果超过了当前时间,就重新取一下.3s 做为缓冲
      now = timestamp = Date.parse(new Date()) / 1000; 
      if (expire < now + 3)
      {
        body = send_request();
        console.log(body);
        var obj = eval ("(" + body + ")");
        host = obj['host']
        policyBase64 = obj['policy']
        accessid = obj['accessid']
        signature = obj['signature']
        expire = parseInt(obj['expire'])
        callbackbody = obj['callback'] 
        key = obj['dir']
        return true;
      }
      return false;
    };
    
    //组装发送数据
    var request = new FormData(); 
    request.append("OSSAccessKeyId",accessid);//Bucket 拥有者的Access Key Id。
    request.append("policy",policyBase64);//policy规定了请求的表单域的合法性
    request.append("Signature",signature);//根据Access Key Secret和policy计算的签名信息,OSS验证该签名信息从而验证该Post请求的合法性
    //---以上都是阿里的认证策略 
    request.append("key",g_object_name);//文件名字,可设置路径
    request.append("success_action_status",'200');// 让服务端返回200,不然,默认会返回204
    request.append('file', file);//需要上传的文件 file  
    
    request.append("callback",callbackbody);//回调,非必选,可以在policy中自定义
    
    $.ajax({  
            url : host,  //上传阿里地址
            data : request,
            processData: false,//默认true,设置为 false,不需要进行序列化处理
            cache: false,//设置为false将不会从浏览器缓存中加载请求信息
            async: false,//发送同步请求
            contentType: false,//避免服务器不能正常解析文件---------具体的可以查下这些参数的含义
            dataType: 'JSONP',//不涉及跨域  写json即可
          type : 'post',
          success : function(callbackHost, request) { //callbackHost:success,request中就是 回调的一些信息,包括状态码什么的 
            var name=$this.attr("name");
            $this.closest("li").append("<span class='img-span'><img src="+host+"/"+get_uploaded_object_name(file.name)+">");//动态向页面添加上传图片
        },  
        error : function(returndata) {  
            alert("上传图片出错",false);  
        }  
    }); 

     由于业务原因以及一些样式的问题不得不用ajax方式上传,大家参考下即可。

      

    业精于勤荒于嬉。
  • 相关阅读:
    【CCF】高速公路 tarjan强连通缩点
    【hihocoder】欧拉路径 并查集判连通
    【CCF】地铁修建 改编Dijkstra
    Android仿微信朋友圈图片展示实现
    android 禁止 recycler 滑动
    android中关闭软键盘
    java Math.pow 精度丢失问题
    Centos查看端口占用情况和开启端口命令
    centos 部署 php
    php undefinde function json_decode()
  • 原文地址:https://www.cnblogs.com/mottled/p/6979536.html
Copyright © 2011-2022 走看看