shell脚本上传文件到阿里云OSS

脚本文件如下:

#!/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")
  • 13
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
上传文件阿里云OSS可以通过以下步骤实现: 1. 引入aliyun-java-sdk-oss依赖 ``` <dependency> <groupId>com.aliyun.oss</groupId> <artifactId>aliyun-java-sdk-oss</artifactId> <version>3.10.0</version> </dependency> ``` 2. 创建OSSClient对象 ``` String endpoint = "http://oss-cn-hangzhou.aliyuncs.com"; String accessKeyId = "yourAccessKeyId"; String accessKeySecret = "yourAccessKeySecret"; String bucketName = "yourBucketName"; OSS ossClient = new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret); ``` 3. 上传文件 ``` String objectName = "yourObjectName"; // 上传OSS后的文件名,可以包含路径 File file = new File("yourLocalFile"); // 要上传的文件路径 ossClient.putObject(bucketName, objectName, file); ``` 4. 关闭OSSClient对象 ``` ossClient.shutdown(); ``` 完整的Java代码示例: ``` import com.aliyun.oss.OSS; import com.aliyun.oss.OSSClientBuilder; import java.io.File; public class OSSUploader { public static void main(String[] args) { String endpoint = "http://oss-cn-hangzhou.aliyuncs.com"; String accessKeyId = "yourAccessKeyId"; String accessKeySecret = "yourAccessKeySecret"; String bucketName = "yourBucketName"; String objectName = "yourObjectName"; // 上传OSS后的文件名,可以包含路径 File file = new File("yourLocalFile"); // 要上传的文件路径 // 创建OSSClient对象 OSS ossClient = new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret); // 上传文件 ossClient.putObject(bucketName, objectName, file); // 关闭OSSClient对象 ossClient.shutdown(); } } ``` 需要注意的是,上传文件时可以指定上传后的文件名,也可以使用原文件名。同时,上传文件的大小不能超过OSS的限制。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值