diff --git a/DependencyInjection/Factory/FtpAdapterFactory.php b/DependencyInjection/Factory/FtpAdapterFactory.php
new file mode 100644
index 0000000..b6d6201
--- /dev/null
+++ b/DependencyInjection/Factory/FtpAdapterFactory.php
@@ -0,0 +1,59 @@
+setDefinition($id, new DefinitionDecorator('knp_gaufrette.adapter.ftp'))
+ ->addArgument($config['directory'])
+ ->addArgument($config['host'])
+ ->addArgument($config['username'])
+ ->addArgument($config['password'])
+ ->addArgument($config['port'])
+ ->addArgument($config['passive'])
+ ->addArgument($config['create'])
+ ->addArgument($config['mode'])
+ ;
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ function getKey()
+ {
+ return 'ftp';
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ function addConfiguration(NodeDefinition $builder)
+ {
+ $builder
+ ->children()
+ ->scalarNode('directory')->isRequired()->end()
+ ->scalarNode('host')->isRequired()->end()
+ ->scalarNode('port')->defaultValue(21)->end()
+ ->scalarNode('username')->defaultNull()->end()
+ ->scalarNode('password')->defaultNull()->end()
+ ->booleanNode('passive')->defaultFalse()->end()
+ ->booleanNode('create')->defaultFalse()->end()
+ ->scalarNode('mode')->defaultValue(FTP_BINARY)->end()
+ ->end()
+ ;
+ }
+}
\ No newline at end of file
diff --git a/Resources/config/adapter_factories.xml b/Resources/config/adapter_factories.xml
index 08668a9..1ecddc5 100644
--- a/Resources/config/adapter_factories.xml
+++ b/Resources/config/adapter_factories.xml
@@ -29,6 +29,9 @@
+
+
+
diff --git a/Resources/config/gaufrette.xml b/Resources/config/gaufrette.xml
index ecb16b8..dc75fef 100644
--- a/Resources/config/gaufrette.xml
+++ b/Resources/config/gaufrette.xml
@@ -26,6 +26,7 @@
+