diff --git a/portal-ui/src/screens/Console/Buckets/ListBuckets/Objects/ListObjects/DeleteObject.tsx b/portal-ui/src/screens/Console/Buckets/ListBuckets/Objects/ListObjects/DeleteObject.tsx index 6bbbfbfc43..587e400292 100644 --- a/portal-ui/src/screens/Console/Buckets/ListBuckets/Objects/ListObjects/DeleteObject.tsx +++ b/portal-ui/src/screens/Console/Buckets/ListBuckets/Objects/ListObjects/DeleteObject.tsx @@ -53,7 +53,9 @@ const DeleteObject = ({ if (selectedObject.endsWith("/")) { recursive = true; } - setDeleteLoading(true); + // Escape object name + selectedObject = encodeURIComponent(selectedObject); + api .invoke( "DELETE", diff --git a/portal-ui/src/screens/Console/Buckets/ListBuckets/Objects/ListObjects/ListObjects.tsx b/portal-ui/src/screens/Console/Buckets/ListBuckets/Objects/ListObjects/ListObjects.tsx index 0c3d9e121c..b418d0ac9a 100644 --- a/portal-ui/src/screens/Console/Buckets/ListBuckets/Objects/ListObjects/ListObjects.tsx +++ b/portal-ui/src/screens/Console/Buckets/ListBuckets/Objects/ListObjects/ListObjects.tsx @@ -468,7 +468,8 @@ const ListObjects = ({ let files = e.target.files; let uploadUrl = `/api/v1/buckets/${bucketName}/objects/upload`; if (path !== "") { - uploadUrl = `${uploadUrl}?prefix=${path}`; + const encodedPath = encodeURIComponent(path); + uploadUrl = `${uploadUrl}?prefix=${encodedPath}`; } let xhr = new XMLHttpRequest(); const areMultipleFiles = files.length > 1 ? true : false; diff --git a/portal-ui/src/screens/Console/Buckets/ListBuckets/Objects/ObjectDetails/ObjectDetails.tsx b/portal-ui/src/screens/Console/Buckets/ListBuckets/Objects/ObjectDetails/ObjectDetails.tsx index b72e4ee245..59f93b0ffc 100644 --- a/portal-ui/src/screens/Console/Buckets/ListBuckets/Objects/ObjectDetails/ObjectDetails.tsx +++ b/portal-ui/src/screens/Console/Buckets/ListBuckets/Objects/ObjectDetails/ObjectDetails.tsx @@ -219,10 +219,11 @@ const ObjectDetails = ({ useEffect(() => { if (loadObjectData) { + const encodedPath = encodeURIComponent(pathInBucket); api .invoke( "GET", - `/api/v1/buckets/${bucketName}/objects?prefix=${pathInBucket}&with_versions=true` + `/api/v1/buckets/${bucketName}/objects?prefix=${encodedPath}&with_versions=true` ) .then((res: IFileInfo[]) => { const result = get(res, "objects", []); diff --git a/portal-ui/src/screens/Console/Buckets/ListBuckets/Objects/utils.ts b/portal-ui/src/screens/Console/Buckets/ListBuckets/Objects/utils.ts index ce55c5adba..2cd2e28a69 100644 --- a/portal-ui/src/screens/Console/Buckets/ListBuckets/Objects/utils.ts +++ b/portal-ui/src/screens/Console/Buckets/ListBuckets/Objects/utils.ts @@ -25,9 +25,8 @@ export const download = ( ) => { const anchor = document.createElement("a"); document.body.appendChild(anchor); - const allPathData = objectPath.split("/"); - - let path = `/api/v1/buckets/${bucketName}/objects/download?prefix=${objectPath}`; + const encodedPath = encodeURIComponent(objectPath); + let path = `/api/v1/buckets/${bucketName}/objects/download?prefix=${encodedPath}`; if (!isNullOrUndefined(versionID) && versionID !== "null") { path = path.concat(`&version_id=${versionID}`); }