阿里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方式上傳,大家參考下即可。

  


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM