天天看點

OSS簽名Header實作Demo(NodeJS)概述詳細資訊

概述

OSS的內建上傳和下載下傳提供了SDK可以直接使用,但實際使用中一些使用者受限環境或者裝置限制需要使用api方式來實作上傳和下載下傳,本文以PutObject接口為例,提供了NodeJS實作的demo。

注:建議優先使用OSS提供SDK,本文提供的隻是簽名實作上傳demo,實際使用中需要結合業務來進行改動代碼

詳細資訊

PutObject實作demo(測試環境Node.js v12.10.0,所需子產品crypto-js、request):

var HmacSha1 = require('crypto-js/hmac-sha1') ;

var Base64 = require('crypto-js/enc-base64');

var request = require("request");

//endpoint

var endpont = 'http://oss-cn-hangzhou.aliyuncs.com';

//bucket

var bucketName = 'xxx';

//objectname

var objectname= 'mytest/nodejs.txt';

//accesskey

var accesskey = 'xxxx';

//accesskeySecret

var accesskeysecret ='xxx';

 

//生成GMT時間

var gmtDate = (new Date()).toGMTString();

console.log(gmtDate);

var contenttype = 'application/json';

var strtosgin = 'PUT\n\n'+contenttype+'\n'+gmtDate+'\n'+'/'+bucketName+'/'+objectname

 

 

var sign = Base64.stringify((HmacSha1(strtosgin,accesskeysecret)));   

   var options = {

        url: 'http://xxx.oss-cn-hangzhou.aliyuncs.com/'+objectname,

        headers: {

            'Content-Type':contenttype,

            'Date':gmtDate,

            'Authorization': 'OSS '+accesskey+':'+sign

        },

        body:'{test:test}'

    };

 

    request.put(options, function(error, response, body) {

        console.info('response:' + JSON.stringify(response));

        console.info("statusCode:" + response.statusCode)

        console.info('body: ' + body );

    });           

繼續閱讀