阿里OSS ajax方式 web直传

3 篇文章 0 订阅
2 篇文章 0 订阅

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);  
    }  
});

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值