diff --git a/buildbot/slave/commands.py b/buildbot/slave/commands.py
index f84f703..f34e139 100644
--- a/buildbot/slave/commands.py
+++ b/buildbot/slave/commands.py
@@ -877,6 +877,11 @@ class SlaveFileDownloadCommand(Command):
         self.path = os.path.join(self.builder.basedir,
                                  self.workdir,
                                  os.path.expanduser(self.filename))
+
+        dirname = os.path.dirname(self.path)
+        if not os.path.exists(dirname):
+            os.makedirs(dirname)
+
         try:
             self.fp = open(self.path, 'wb')
             if self.debug:
diff --git a/docs/buildbot.texinfo b/docs/buildbot.texinfo
index 8380237..dea0959 100644
--- a/docs/buildbot.texinfo
+++ b/docs/buildbot.texinfo
@@ -5192,9 +5192,8 @@ directory. If the buildslave is running in @file{~buildslave}, and the
 builder's ``builddir'' is something like @file{tests-i386}, then the
 workdir is going to be @file{~buildslave/tests-i386/build}, and a
 @code{slavedest=} of @file{foo/bar.html} will get put in
-@file{~buildslave/tests-i386/build/foo/bar.html}. Remember that
-neither of these commands will create missing directories for you.
-
+@file{~buildslave/tests-i386/build/foo/bar.html}. Both of these commands
+will create any missing intervening directories.
 
 @subheading Other Parameters
 

