I have a pre-signed upload URL from AWS S3 to upload a video file to. Testing on Postman the video is successfully uploaded. However i get a 403 returned when implementing in retrofit. I cannot use multipart upload for this task.
service call :
@Headers("Content-Type: video/mp4")
@PUT
fun uploadTaskAWS(@Url awsUrl: String, @Body filePart: RequestBody): Call<ResponseBody>
upload:
val file = File(task.file_path)
val requestFile = RequestBody.create(MediaType.parse("video/mp4"), file)
val response = awsTaskUploadService.uploadTaskAWS(task.upload_url, requestFile)
I have ensured the URL is correct. The content type header is added too, postman screenshot attached. Getting 403 Forbidden Error
I have found this related question however i'm still getting a 403. Upload a file to AWS S3 pre-signed URL using Retrofit2
Any suggestions?
solution was to include multipart and expect Single response not Call :
@Multipart
@PUT
fun uploadAsset(
@Header(CONTENT_TYPE) contentType: String,
@Url uploadUrl: String,
@Part file: MultipartBody.Part
): Single<ResponseBody>
where contentType is passed in
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)