gpt4 book ai didi

java - AWS : how to fix S3 event replacing space with '+' sign in object key names in json

转载 作者:搜寻专家 更新时间:2023-10-30 19:42:09 24 4
gpt4 key购买 nike

我有一个 lamba 函数,可以将对象从存储桶“A”复制到存储桶“B”,并且一切正常,直到在存储桶“A”中创建了名称为“New Text Document.txt”的对象,json内置于 S3 事件中,键为“key”:“New+Text+Document.txt”。

空格被替换为“+”。通过在网络上搜索,我知道这是一个已知问题。但我不确定如何解决这个问题,传入的 json 本身有一个“+”,而“+”实际上可以在文件名中。比如“新建+文本文档.txt”。

所以我不能盲目地在我的 lambda 函数中将“+”与“”隔开。

由于这个问题,当代码尝试在存储桶中查找文件时,找不到它。

请提出建议。

最佳答案

我在寻找用 python 而不是 java 编写的 lambda 的解决方案时遇到了这个问题; “urllib.parse.unquote_plus”对我有用,它正确处理了包含空格和 + 号的文件:

from urllib.parse import unquote_plus
import boto3


bucket = 'testBucket1234'
# uploaded file with name 'foo + bar.txt' for test, s3 Put event passes following encoded object_key
object_key = 'foo %2B bar.txt'
print(object_key)
object_key = unquote_plus(object_key)
print(object_key)

client = boto3.client('s3')
client.get_object(Bucket=bucket, Key=object_key)

关于java - AWS : how to fix S3 event replacing space with '+' sign in object key names in json,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44779042/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com