From 5c2be25d665fbb7c217383626d6085cc14d2abcc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Abel=20Garci=CC=81a=20de=20Prada?= Date: Thu, 1 Jul 2021 08:58:05 +0200 Subject: [PATCH] Override contentLength in content uri request body to fix uploads to ocis --- .../resources/files/UploadFileFromContentUriOperation.kt | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/owncloudComLibrary/src/main/java/com/owncloud/android/lib/resources/files/UploadFileFromContentUriOperation.kt b/owncloudComLibrary/src/main/java/com/owncloud/android/lib/resources/files/UploadFileFromContentUriOperation.kt index 75c031eb..e539e019 100644 --- a/owncloudComLibrary/src/main/java/com/owncloud/android/lib/resources/files/UploadFileFromContentUriOperation.kt +++ b/owncloudComLibrary/src/main/java/com/owncloud/android/lib/resources/files/UploadFileFromContentUriOperation.kt @@ -2,6 +2,7 @@ package com.owncloud.android.lib.resources.files import android.content.ContentResolver import android.net.Uri +import android.provider.OpenableColumns import com.owncloud.android.lib.common.OwnCloudClient import com.owncloud.android.lib.common.http.HttpConstants import com.owncloud.android.lib.common.http.methods.webdav.PutMethod @@ -59,6 +60,14 @@ class ContentUriRequestBody( return contentType.toMediaTypeOrNull() } + override fun contentLength(): Long { + contentResolver.query(contentUri, null, null, null, null)?.use { cursor -> + val sizeIndex = cursor.getColumnIndex(OpenableColumns.SIZE) + cursor.moveToFirst() + return cursor.getLong(sizeIndex) + } ?: return -1 + } + override fun writeTo(sink: BufferedSink) { val inputStream = contentResolver.openInputStream(contentUri) ?: throw IOException("Couldn't open content URI for reading: $contentUri")