脚本文件如下:

#!/bin/bash

# OSS 凭据和终端
ACCESS_KEY_ID="your-access-key-id"
ACCESS_KEY_SECRET="your-access-key-secret"
ENDPOINT="your-bucket-endpoint"
BUCKET_NAME="your-bucket-name"

# 文件路径
FILE_PATH="/path/to/your/file"
FILE_NAME=$(basename $FILE_PATH)

# 资源标识
RESOURCE="/${BUCKET_NAME}/${FILE_NAME}"
CONTENT_TYPE="application/octet-stream"
DATE_VALUE=$(date -Ru)
STRING_TO_SIGN="PUT\n\n${CONTENT_TYPE}\n${DATE_VALUE}\n${RESOURCE}"
SIGNATURE=$(echo -en $STRING_TO_SIGN | openssl sha1 -hmac $ACCESS_KEY_SECRET -binary | base64)

# 上传文件
curl -X PUT -T "${FILE_PATH}" \
  -H "Host: ${BUCKET_NAME}.${ENDPOINT}" \
  -H "Date: ${DATE_VALUE}" \
  -H "Content-Type: ${CONTENT_TYPE}" \
  -H "Authorization: OSS ${ACCESS_KEY_ID}:${SIGNATURE}" \
  "http://${BUCKET_NAME}.${ENDPOINT}/${FILE_NAME}"

如果想知道是否上传成功,可以修改为

# 上传文件
Http_response=$(curl  -w "%{http_code}" -X PUT -T "${FILE_PATH}" \
  -H "Host: ${BUCKET_NAME}.${ENDPOINT}" \
  -H "Date: ${DATE_VALUE}" \
  -H "Content-Type: ${CONTENT_TYPE}" \
  -H "Authorization: OSS ${ACCESS_KEY_ID}:${SIGNATURE}" \
  "http://${BUCKET_NAME}.${ENDPOINT}/${FILE_NAME}")
if [ "Http_response" -eq 200 ]; then
ehco "upload sucess"
else
echo "upload failed"
fi

备注

如果出现错误: DATE_VALUE=$(date -Ru)改为

DATE_VALUE=$(TZ=GMT date +"%a, %d %b %Y %H:%M:%S %z")
Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐