gpt4 book ai didi

android - PUT 上传文件到 AWS S3 预签名 url Retrofit2 Android

转载 作者:行者123 更新时间:2023-11-29 02:21:42 33 4
gpt4 key购买 nike

我有一个来自 AWS S3 的预签名上传 URL,可以将视频文件上传到。在 Postman 上测试视频已成功上传。但是,在改造中实现时,我得到了 403 返回。我无法为此任务使用分段上传。

服务调用:

@Headers("Content-Type: video/mp4")
@PUT
fun uploadTaskAWS(@Url awsUrl: String, @Body filePart: RequestBody): Call<ResponseBody>

上传:

            val file = File(task.file_path)
val requestFile = RequestBody.create(MediaType.parse("video/mp4"), file)
val response = awsTaskUploadService.uploadTaskAWS(task.upload_url, requestFile)

我已确保 URL 正确无误。也添加了内容类型 header ,附上 postman 屏幕截图。获取 403 禁止错误

screenshot of postman

我找到了这个相关问题,但我仍然收到 403。Upload a file to AWS S3 pre-signed URL using Retrofit2

有什么建议吗?

最佳答案

解决方案是包含 multipart 并期望 Single response not Call :

  @Multipart
@PUT
fun uploadAsset(
@Header(CONTENT_TYPE) contentType: String,
@Url uploadUrl: String,
@Part file: MultipartBody.Part
): Single<ResponseBody>

contentType传入的地方

val requestFile = RequestBody.create(MediaType.parse(contentType), file)
val body = MultipartBody.Part.createFormData(mediaType, task.file_name, requestFile)
assetService.uploadAsset(contentType, task.upload_url, body)

关于android - PUT 上传文件到 AWS S3 预签名 url Retrofit2 Android,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55162161/

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