在AWS S3中使用预签名URL进行文件上传,并保留文件名的解决方法如下所示(使用Python语言示例):
import boto3
import urllib.parse
def generate_presigned_url(bucket_name, object_name, expiration=3600):
# 生成S3客户端
s3_client = boto3.client('s3')
# 生成预签名URL
response = s3_client.generate_presigned_url(
'put_object',
Params={
'Bucket': bucket_name,
'Key': object_name,
'ContentType': 'application/octet-stream'
},
ExpiresIn=expiration
)
# URL编码文件名
file_name = urllib.parse.quote(object_name)
# 替换预签名URL中的编码文件名
presigned_url = response.replace(object_name, file_name)
return presigned_url
# 示例用法
bucket_name = 'your-bucket-name' # 存储桶名称
file_name = 'your-file-name.jpg' # 文件名
presigned_url = generate_presigned_url(bucket_name, file_name)
print(presigned_url)
注意:在代码示例中,需要将your-bucket-name
和your-file-name.jpg
替换为实际的存储桶名称和文件名。此外,还可以调整expiration
参数来设置预签名URL的过期时间(单位为秒)。
上一篇:AWS S3 允许读取除了一个特定文件夹之外的所有对象。
下一篇:AWS s3 正在尝试修复错误 s3.meta.client.head_bucket(Bucket=bucket_name)。