簡體   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