diff --git a/filesystem/android/src/main/java/com/capacitorjs/plugins/filesystem/Filesystem.java b/filesystem/android/src/main/java/com/capacitorjs/plugins/filesystem/Filesystem.java index c3fb54b44..f680d2e8a 100644 --- a/filesystem/android/src/main/java/com/capacitorjs/plugins/filesystem/Filesystem.java +++ b/filesystem/android/src/main/java/com/capacitorjs/plugins/filesystem/Filesystem.java @@ -340,6 +340,7 @@ private JSObject doDownloadInBackground(String urlString, PluginCall call, Bridg Boolean disableRedirects = call.getBoolean("disableRedirects"); Boolean shouldEncode = call.getBoolean("shouldEncodeUrlParams", true); Boolean progress = call.getBoolean("progress", false); + Boolean recursive = call.getBoolean("recursive", false); String method = call.getString("method", "GET").toUpperCase(Locale.ROOT); String path = call.getString("path"); @@ -348,6 +349,10 @@ private JSObject doDownloadInBackground(String urlString, PluginCall call, Bridg final URL url = new URL(urlString); final File file = getFileObject(path, directory); + if(recursive) { + file.getParentFile().mkdirs(); + } + HttpRequestHandler.HttpURLConnectionBuilder connectionBuilder = new HttpRequestHandler.HttpURLConnectionBuilder() .setUrl(url) .setMethod(method) diff --git a/filesystem/ios/Sources/FilesystemPlugin/Filesystem.swift b/filesystem/ios/Sources/FilesystemPlugin/Filesystem.swift index 51c7ba206..3d44580d5 100644 --- a/filesystem/ios/Sources/FilesystemPlugin/Filesystem.swift +++ b/filesystem/ios/Sources/FilesystemPlugin/Filesystem.swift @@ -186,6 +186,7 @@ import Capacitor // swiftlint:disable function_body_length @objc public func downloadFile(call: CAPPluginCall, emitter: @escaping ProgressEmitter, config: InstanceConfiguration?) throws { let directory = call.getString("directory", "DOCUMENTS") + let recursive = call.getBool("recursive", false) guard let path = call.getString("path") else { call.reject("Invalid file path") return @@ -222,7 +223,7 @@ import Capacitor let dest = dir!.appendingPathComponent(path) CAPLog.print("Attempting to write to file destination: \(dest.absoluteString)") - if !FileManager.default.fileExists(atPath: dest.deletingLastPathComponent().absoluteString) { + if recursive && !FileManager.default.fileExists(atPath: dest.deletingLastPathComponent().absoluteString) { try FileManager.default.createDirectory(at: dest.deletingLastPathComponent(), withIntermediateDirectories: true, attributes: nil) }