#!/usr/bin/env bash export LC_ALL=C PROJECT_PREFIX=<%= prefix %> OSS_BUCKET_NAME=<%= bucket %> LOCALFILE=<%= file %> OSS_ACCESS_KEY_ID=<%= ak %> OSS_ACCESS_KEY_SECRET=<%= sk %> ENDPOINT=<%= endpoint %> RANDOMSTR=<%= (('a'..'z').to_a + ('0'..'9').to_a).shuffle.first(16).join %> OBJECT_NAME=$PROJECT_PREFIX/$(date '+%y%m%d')/$RANDOMSTR/$LOCALFILE RESOURCE="/${OSS_BUCKET_NAME}/${OBJECT_NAME}" CONTENT_MD5=$(openssl dgst -md5 -binary "${LOCALFILE}" | openssl enc -base64) CONTENT_TYPE=$(file -ib "${LOCALFILE}" |awk -F ";" '{print $1}') DATE_VALUE="`TZ=GMT date +'%a, %d %b %Y %H:%M:%S GMT'`" STRING_TO_SIGN="PUT\n${CONTENT_MD5}\n${CONTENT_TYPE}\n${DATE_VALUE}\n${RESOURCE}" SIGNATURE=$(echo -e -n $STRING_TO_SIGN | openssl dgst -sha1 -binary -hmac $OSS_ACCESS_KEY_SECRET | openssl enc -base64) curl -i -q -X PUT -T "${LOCALFILE}" \ -H "Host: ${OSS_BUCKET_NAME}.${ENDPOINT}" \ -H "Date: ${DATE_VALUE}" \ -H "Content-Type: ${CONTENT_TYPE}" \ -H "Content-MD5: ${CONTENT_MD5}" \ -H "Authorization: OSS ${OSS_ACCESS_KEY_ID}:${SIGNATURE}" \ "http://${OSS_BUCKET_NAME}.${ENDPOINT}/${OBJECT_NAME}"