diff --git a/collects/scribble/jfp/lang.rkt b/collects/scribble/jfp/lang.rkt
index 9ea1d97c..3ee36659 100644
--- a/collects/scribble/jfp/lang.rkt
+++ b/collects/scribble/jfp/lang.rkt
@@ -7,6 +7,7 @@
          setup/main-collects
          "../private/defaults.rkt"
          net/ftp
+         racket/file
          (for-syntax scheme/base))
 (provide (except-out (all-from-out scribble/doclang) #%module-begin)
          (all-from-out scribble/jfp)
@@ -48,5 +49,6 @@
   (define c (ftp-establish-connection site 21 "anonymous" "user@racket-lang.org"))
   (ftp-cd c path)
   (let-values ([(base name dir?) (split-path cls-file)])
+    (make-directory* base)
     (ftp-download-file c base file))
   (ftp-close-connection c))
diff --git a/collects/scribble/lncs/lang.rkt b/collects/scribble/lncs/lang.rkt
index c65b8f74..bfde172f 100644
--- a/collects/scribble/lncs/lang.rkt
+++ b/collects/scribble/lncs/lang.rkt
@@ -1,6 +1,7 @@
 #lang racket/base
 (require scribble/doclang
          scribble/core
+         racket/file
          (except-in scribble/base author)
          (prefix-in s/b: scribble/base)
          scribble/decode
@@ -65,6 +66,7 @@
   (log-error (format "Downloading via ftp://~a/~a/~a..." site path file))
   (define c (ftp-establish-connection site 21 "anonymous" "user@racket-lang.org"))
   (ftp-cd c path)
+  (make-directory* (find-system-path 'temp-dir))
   (ftp-download-file c (find-system-path 'temp-dir) file)
   (ftp-close-connection c)
   (define z (build-path (find-system-path 'temp-dir) file))