# Poco::Net

# class FTPStreamFactory

Library: Net
Package: FTP
Header: Poco/Net/FTPStreamFactory.h

## Description

An implementation of the URIStreamFactory interface that handles File Transfer Protocol (ftp) URIs.

The URI's path may end with an optional type specification in the form (;type=<typecode>), where <typecode> is one of a, i or d. If type=a, the file identified by the path is transferred in ASCII (text) mode. If type=i, the file is transferred in Image (binary) mode. If type=d, a directory listing (in NLST format) is returned. This corresponds with the FTP URL format specified in RFC 1738.

If the URI does not contain a username and password, the username "anonymous" and the password "poco@localhost".

## Inheritance

Direct Base Classes: Poco::URIStreamFactory

All Base Classes: Poco::URIStreamFactory

Known Derived Classes: FTPSStreamFactory

## Member Summary

Member Functions: getAnonymousPassword, getPasswordProvider, getPathAndType, getUserInfo, open, registerFactory, setAnonymousPassword, setPasswordProvider, splitUserInfo, unregisterFactory

Inherited Functions: open

## Constructors

### FTPStreamFactory

FTPStreamFactory();

Creates the FTPStreamFactory.

## Destructor

### ~FTPStreamFactory

~FTPStreamFactory();

Destroys the FTPStreamFactory.

## Member Functions

### getAnonymousPassword

static const std::string & getAnonymousPassword();

Returns the password used for anonymous FTP.

### getPasswordProvider

static FTPPasswordProvider * getPasswordProvider();

Returns the FTPPasswordProvider currently in use, or NULL if no one has been set.

### open

std::istream * open(
const Poco::URI & uri
);

Creates and opens a FTP stream for the given URI. The URI must be a ftp://... URI.

Throws a NetException if anything goes wrong.

### registerFactory

static void registerFactory();

Registers the FTPStreamFactory with the default URIStreamOpener instance.

### setAnonymousPassword

static void setAnonymousPassword(
const std::string & password
);

Sets the password used for anonymous FTP.

WARNING: Setting the anonymous password is not thread-safe, so it's best to call this method during application initialization, before the FTPStreamFactory is used for the first time.

### setPasswordProvider

static void setPasswordProvider(
FTPPasswordProvider * pProvider
);

Sets the FTPPasswordProvider. If NULL is given, no password provider is used.

WARNING: Setting the password provider is not thread-safe, so it's best to call this method during application initialization, before the FTPStreamFactory is used for the first time.

### unregisterFactory

static void unregisterFactory();

Unregisters the FTPStreamFactory with the default URIStreamOpener instance.

### getPathAndType

static void getPathAndType(
const Poco::URI & uri,
std::string & path,
char & type
);

### getUserInfo

static void getUserInfo(
const Poco::URI & uri,
std::string & username,
std::string & password
);

### splitUserInfo

static void splitUserInfo(
const std::string & userInfo,
std::string & username,
std::string & password
);