有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java有没有人有一个好的代码示例/库,可以通过S3预签名的URL执行大文件(5GB)PUT操作?

我们的Python服务器将生成一个put_object预签名的URL,并将其传递给我们的Java Android应用程序

然后,我们的Java Android应用程序将使用给定的URL执行PUT操作。文件内容最多可达5GB。(注意:对URL的单次PUT请求最多可支持5GB的文件大小)

下面是一个简单的Python代码示例

###############
# PRESIGNED URL
###############
url = s3_client.generate_presigned_url(
    ClientMethod='put_object',
    Params={
        'Bucket': bucket_name, 
        'Key': key_name
    },
    ExpiresIn=3600
)


##################
# GET FILE CONTENT (Should be rewritten in Java, streaming way)
##################
with open(file_name, 'rb') as object_file:
    body = object_file.read()
object_file.close()


#####
# PUT (Should be rewritten in Java, streaming way)
#####
response = requests.put(url, data=body)

如果我们要处理5GB大小的文件,那么给出的示例并不完全正确

在将整个5GB内容作为单个字符串正文发送之前,将其读取到Android设备内存中,将导致OutOfMemoryException

我试图以“流”的方式(使用InputStreamOutputStream)搜索如何执行Java PUT操作,但找不到任何好的示例

有人知道如何对大文件执行PUT操作而不会导致OutOfMemoryException吗

谢谢


共 (0) 个答案