diff --git src/bp-core/bp-core-functions.php src/bp-core/bp-core-functions.php
index d7da2d1..0c45bf3 100644
--- src/bp-core/bp-core-functions.php
+++ src/bp-core/bp-core-functions.php
@@ -2597,11 +2597,27 @@ function bp_upload_dir() {
 	$bp = buddypress();
 
 	if ( empty( $bp->upload_dir ) ) {
-		$need_switch = (bool) ( is_multisite() && ! bp_is_root_blog() );
+		$wp_current_site = get_current_site();
+		$need_switch     = (int) bp_get_root_blog_id() !== (int) $wp_current_site->blog_id;
 
 		// Maybe juggle to root blog.
 		if ( true === $need_switch ) {
-			switch_to_blog( bp_get_root_blog_id() );
+			$blog_id = bp_get_root_blog_id();
+
+			/**
+			 * Multiblog setups will use common uploads dir by default
+			 *
+			 * Filter here & return false to use a different upload dir for
+			 * each site.
+			 *
+			 * @param $value True to use common uploads dir accross the network.
+			 *               False otherwise.
+			 */
+			if ( true === (bool) apply_filters( 'bp_multiblog_common_upload_dir', bp_is_multiblog_mode() ) ) {
+				$blog_id = $wp_current_site->blog_id;
+			}
+
+			switch_to_blog( $blog_id );
 		}
 
 		// Get the upload directory (maybe for root blog).
