繁体   English   中英

带有retrofit2视频/图像损坏的AWS S3文件上传

[英]AWS S3 file upload with retrofit2 video/image corrupt

当使用改造上传成功上传文件到 s3 并返回 200 但文件已损坏。 该文件可以是视频或图像。

 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)

其中 contentType 是“video/mp4”或“image/jpeg”,mediaType 是“video”或“image”

服务 :

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

文件上传并看起来正确,但它们已损坏且无法查看。

我已经检查了这个问题,但仍然卡住了。 带有 Android Retrofit V2 库的 AWS S3 Rest API,上传的图像已损坏

删除了分段上传,并且可以正常工作。

作为对@nt95 答案的改进和详细说明,您正在使用 multipart 将文件发送到服务器,虽然似乎没有必要这样做,但只需从所需文件中创建一个RequestBody并将其作为参数中的@Body发送。

不工作代码:

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

工作代码:

val requestFile = RequestBody.create(MediaType.parse(contentType), file)

并将其传递给接口,如下所示:

@PUT
fun uploadAsset(
@Header(CONTENT_TYPE) contentType: String,
@Url uploadUrl: String,
@Body file: RequestBody
): Single<ResponseBody>

你会没事的

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM