diff --git a/bot/reviewbot/processing/review.py b/bot/reviewbot/processing/review.py
index 28f1d812669da06d51b0b09a47f33fea6072b18c..3c3f3f07a20f17454fb4181051becf1c0d16354d 100644
--- a/bot/reviewbot/processing/review.py
+++ b/bot/reviewbot/processing/review.py
@@ -301,7 +301,11 @@ class File:
 
             raise
 
-    def get_patched_file_path(self) -> Optional[str]:
+    def get_patched_file_path(
+        self,
+        use_subdirectories: bool = False,
+        tempdir: str = None,
+    ) -> Optional[str]:
         """Fetch the patched file and return the filename of it.
 
         Version Changed:
@@ -325,8 +329,18 @@ class File:
         if contents is None:
             return None
 
-        tempdir = make_tempdir()
-        filename = os.path.join(tempdir, os.path.basename(self.dest_file))
+        if not tempdir:
+            tempdir = make_tempdir()
+
+        dest_file = (
+            self.dest_file
+            if use_subdirectories
+            else os.path.basename(self.dest_file)
+        )
+        filename = os.path.join(tempdir, dest_file)
+
+        if use_subdirectories:
+            os.makedirs(os.path.dirname(filename), exist_ok=True)
 
         with open(filename, 'wb') as fp:
             fp.write(contents)
