Condividi tramite


Classe CFtpConnection

Gestisce la connessione FTP a un server Internet e consente la manipolazione diretta di directory e file in tale server.

Sintassi

class CFtpConnection : public CInternetConnection

Membri

Costruttori pubblici

Nome Descrizione
CFtp Connessione ion::CFtp Connessione ion Costruisce un oggetto CFtpConnection.

Metodi pubblici

Nome Descrizione
CFtp Connessione ion::Command Invia un comando direttamente a un server FTP.
CFtp Connessione ion::CreateDirectory Crea una directory nel server.
CFtp Connessione ion::GetCurrentDirectory Ottiene la directory corrente per questa connessione.
CFtp Connessione ion::GetCurrentDirectoryAsURL Ottiene la directory corrente per questa connessione come URL.
CFtp Connessione ion::GetFile Ottiene un file dal server connesso
CFtp Connessione ion::OpenFile Apre un file nel server connesso.
CFtp Connessione ion::P utFile Inserisce un file nel server.
CFtp Connessione ion::Remove Rimuove un file dal server.
CFtp Connessione ion::RemoveDirectory Rimuove la directory specificata dal server.
CFtp Connessione ion::Rename Rinomina un file nel server.
CFtp Connessione ion::SetCurrentDirectory Imposta la directory FTP corrente.

Osservazioni:

FTP è uno dei tre servizi Internet riconosciuti dalle classi WinInet MFC.

Per comunicare con un server Internet FTP, è prima necessario creare un'istanza di CInternetSession e quindi creare un CFtpConnection oggetto . Non si crea mai direttamente un CFtpConnection oggetto, invece, chiamare CInternetSession::GetFtp Connessione ion, che crea l'oggetto CFtpConnection e restituisce un puntatore.

Per altre informazioni sul CFtpConnection funzionamento delle altre classi Internet MFC, vedere l'articolo Programmazione Internet con WinInet. Per altre informazioni sulla comunicazione con gli altri due servizi supportati, HTTP e gopher, vedere le classi CHttp Connessione ion e CGopher Connessione ion.

Esempio

Vedere l'esempio nella panoramica della classe CFtpFileFind .

Gerarchia di ereditarietà

CObject

CInternet Connessione ion

CFtpConnection

Requisiti

Intestazione: afxinet.h

CFtp Connessione ion::CFtp Connessione ion

Questa funzione membro viene chiamata per costruire un CFtpConnection oggetto .

CFtpConnection(
    CInternetSession* pSession,
    HINTERNET hConnected,
    LPCTSTR pstrServer,
    DWORD_PTR dwContext);

CFtpConnection(
    CInternetSession* pSession,
    LPCTSTR pstrServer,
    LPCTSTR pstrUserName = NULL,
    LPCTSTR pstrPassword = NULL,
    DWORD_PTR dwContext = 0,
    INTERNET_PORT nPort = INTERNET_INVALID_PORT_NUMBER,
    BOOL bPassive = FALSE);

Parametri

pSession
Puntatore all'oggetto CInternetSession correlato.

h Connessione ed
Handle di Windows della sessione Internet corrente.

pstrServer
Puntatore a una stringa contenente il nome del server FTP.

dwContext
Identificatore di contesto per l'operazione . dwContext identifica le informazioni sullo stato dell'operazione restituite da CInternetSession::OnStatusCallback. Il valore predefinito è impostato su 1; Tuttavia, è possibile assegnare in modo esplicito un ID contesto specifico per l'operazione. L'oggetto e qualsiasi operazione eseguita verrà associato a tale ID contesto.

pstrUserName
Puntatore a una stringa con terminazione Null che specifica il nome dell'utente da accedere. Se NULL, il valore predefinito è anonimo.

pstrPassword
Puntatore a una stringa con terminazione Null che specifica la password da usare per l'accesso. Se pstrPassword e pstrUserName sono NULL, la password anonima predefinita è il nome di posta elettronica dell'utente. Se pstrPassword è NULL (o una stringa vuota) ma pstrUserName non è NULL, viene usata una password vuota. La tabella seguente descrive il comportamento per le quattro possibili impostazioni di pstrUserName e pstrPassword:

pstrUserName pstrPassword Nome utente inviato al server FTP Password inviata al server FTP
NULL o " " NULL o " " "anonimo" Nome di posta elettronica dell'utente
Stringa non NULL NULL o " " pstrUserName " "
Stringa NULL non NULL ERROR ERROR
Stringa non NULL Stringa non NULL pstrUserName pstrPassword

nPort
Numero che identifica la porta TCP/IP da usare nel server.

bPassive
Specifica la modalità passiva o attiva per questa sessione FTP. Se impostato su TRUE, imposta il dwFlag dell'API Win32 su INTERNET_FLAG_PASSIVE.

Osservazioni:

Non si crea mai direttamente un CFtpConnection oggetto. Chiamare invece CInternetSession::GetFtp Connessione ion, che crea l'oggetto CFptConnection .

CFtp Connessione ion::Command

Invia un comando direttamente a un server FTP.

CInternetFile* Command(
    LPCTSTR pszCommand,
    CmdResponseType eResponse = CmdRespNone,
    DWORD dwFlags = FTP_TRANSFER_TYPE_BINARY,
    DWORD_PTR dwContext = 1);

Parametri

pszCommand
Puntatore a una stringa contenente il comando da inviare.

eResponse
Specifica se è prevista una risposta dal server FTP. I possibili valori sono i seguenti:

  • CmdRespNone Non è prevista alcuna risposta.
  • CmdRespRead È prevista una risposta.
  • CmdRespWrite Non utilizzato.

CmdResponseType è un membro di CFtp Connessione ion, definito in afxinet.h.

dwFlags
Valore contenente i flag che controllano questa funzione. Per un elenco completo, vedere FTPCommand.

dwContext
Puntatore a un valore contenente un valore definito dall'applicazione usato per identificare il contesto dell'applicazione nei callback.

Valore restituito

Diverso da zero se ha esito positivo; in caso contrario 0.

Osservazioni:

Questa funzione membro emula la funzionalità della funzione FTPCommand , come descritto in Windows SDK.

Se si verifica un errore, MFC genera un'eccezione di tipo CInternetException.

CFtp Connessione ion::CreateDirectory

Chiamare questa funzione membro per creare una directory nel server connesso.

BOOL CreateDirectory(LPCTSTR pstrDirName);

Parametri

pstrDirName
Puntatore a una stringa contenente il nome della directory da creare.

Valore restituito

Diverso da zero se ha esito positivo; in caso contrario 0. Se la chiamata non riesce, è possibile chiamare la funzione Windows GetLastError per determinare la causa dell'errore.

Osservazioni:

Utilizzare GetCurrentDirectory per determinare la directory di lavoro corrente per questa connessione al server. Non presupporre che il sistema remoto abbia connesso l'utente alla directory radice.

Il pstrDirName parametro può essere un nome file parzialmente o completo rispetto alla directory corrente. Una barra rovesciata (\) o una barra (/) può essere usata come separatore di directory per entrambi i nomi. CreateDirectory converte i separatori dei nomi di directory nei caratteri appropriati prima di essere usati.

CFtp Connessione ion::GetCurrentDirectory

Chiamare questa funzione membro per ottenere il nome della directory corrente.

BOOL GetCurrentDirectory(CString& strDirName) const;

BOOL GetCurrentDirectory(
    LPTSTR pstrDirName,
    LPDWORD lpdwLen) const;

Parametri

strDirName
Riferimento a una stringa che riceverà il nome della directory.

pstrDirName
Puntatore a una stringa che riceverà il nome della directory.

lpdwLen
Puntatore a un DWORD contenente le informazioni seguenti:

Nella voce: dimensioni del buffer a cui fa riferimento pstrDirName.

In caso di restituzione: numero di caratteri archiviati in pstrDirName. Se la funzione membro ha esito negativo e ERROR_INSUFFICIENT_BUFFER viene restituito, lpdwLen contiene il numero di byte che l'applicazione deve allocare per ricevere la stringa.

Valore restituito

Diverso da zero se ha esito positivo; in caso contrario 0. Se la chiamata non riesce, è possibile chiamare la funzione Win32 GetLastError per determinare la causa dell'errore.

Osservazioni:

Per ottenere invece il nome della directory come URL, chiamare GetCurrentDirectoryAsURL.

I parametri pstrDirName o strDirName possono essere nomi file parzialmente qualificati rispetto alla directory corrente o completi. Una barra rovesciata (\) o una barra (/) può essere usata come separatore di directory per entrambi i nomi. GetCurrentDirectory converte i separatori dei nomi di directory nei caratteri appropriati prima di essere usati.

CFtp Connessione ion::GetCurrentDirectoryAsURL

Chiamare questa funzione membro per ottenere il nome della directory corrente come URL.

BOOL GetCurrentDirectoryAsURL(CString& strDirName) const;

BOOL GetCurrentDirectoryAsURL(
    LPTSTR pstrName,
    LPDWORD lpdwLen) const;

Parametri

strDirName
Riferimento a una stringa che riceverà il nome della directory.

pstrDirName
Puntatore a una stringa che riceverà il nome della directory.

lpdwLen
Puntatore a un DWORD contenente le informazioni seguenti:

Nella voce: dimensioni del buffer a cui fa riferimento pstrDirName.

In caso di restituzione: numero di caratteri archiviati in pstrDirName. Se la funzione membro ha esito negativo e ERROR_INSUFFICIENT_BUFFER viene restituito, lpdwLen contiene il numero di byte che l'applicazione deve allocare per ricevere la stringa.

Valore restituito

Diverso da zero se ha esito positivo; in caso contrario 0. Se la chiamata non riesce, è possibile chiamare la funzione Win32 GetLastError per determinare la causa dell'errore.

Osservazioni:

GetCurrentDirectoryAsURL si comporta come GetCurrentDirectory

Il parametro strDirName può essere un nome file parzialmente qualificato rispetto alla directory corrente o completo. Una barra rovesciata (\) o una barra (/) può essere usata come separatore di directory per entrambi i nomi. GetCurrentDirectoryAsURL converte i separatori dei nomi di directory nei caratteri appropriati prima di essere usati.

CFtp Connessione ion::GetFile

Chiamare questa funzione membro per ottenere un file da un server FTP e archiviarlo nel computer locale.

BOOL GetFile(
    LPCTSTR pstrRemoteFile,
    LPCTSTR pstrLocalFile,
    BOOL bFailIfExists = TRUE,
    DWORD dwAttributes = FILE_ATTRIBUTE_NORMAL,
    DWORD dwFlags = FTP_TRANSFER_TYPE_BINARY,
    DWORD_PTR dwContext = 1);

Parametri

pstrRemoteFile
Puntatore a una stringa con terminazione Null contenente il nome di un file da recuperare dal server FTP.

pstrLocalFile
Puntatore a una stringa con terminazione Null contenente il nome del file da creare nel sistema locale.

bFailIfExists
Indica se il nome del file può essere già utilizzato da un file esistente. Se il nome del file locale esiste già e questo parametro è TRUE, GetFile ha esito negativo. In caso contrario, GetFile cancellerà la copia esistente del file.

dwAttributes
Indica gli attributi del file. Può trattarsi di qualsiasi combinazione dei flag FILE_ATTRIBUTE_* seguenti.

  • FILE_ATTRIBUTE_ARCHIVE Il file è un file di archivio. Le applicazioni usano questo attributo per contrassegnare i file per il backup o la rimozione.

  • FILE_ATTRIBUTE_COMPRESedizione Standard D Il file o la directory è compressa. Per un file, la compressione indica che tutti i dati nel file sono compressi. Per una directory, la compressione è l'impostazione predefinita per i file e le sottodirectory appena creati.

  • FILE_ATTRIBUTE_DIRECTORY Il file è una directory.

  • FILE_ATTRIBUTE_NORMAL Il file non ha altri attributi impostati. Questo attributo è valido solo se usato da solo. Tutti gli altri attributi di file sostituiscono FILE_ATTRIBUTE_NORMAL:

  • FILE_ATTRIBUTE_HIDDEN Il file è nascosto. Non deve essere incluso in un elenco di directory normale.

  • FILE_ATTRIBUTE_READONLY Il file è di sola lettura. Le applicazioni possono leggere il file, ma non possono scriverlo o eliminarlo.

  • FILE_ATTRIBUTE_SYSTEM Il file fa parte di o viene utilizzato esclusivamente dal sistema operativo.

  • FILE_ATTRIBUTE_TEMPORARY Il file viene usato per l'archiviazione temporanea. Le applicazioni devono scrivere nel file solo se assolutamente necessario. La maggior parte dei dati del file rimane in memoria senza essere scaricata nel supporto perché il file verrà presto eliminato.

dwFlags
Specifica le condizioni in base alle quali si verifica il trasferimento. Questo parametro può essere uno dei valori dwFlags descritti in FtpGetFile in Windows SDK.

dwContext
Identificatore di contesto per il recupero del file. Per altre informazioni su dwContext, vedere Osservazioni.

Valore restituito

Diverso da zero se ha esito positivo; in caso contrario 0. Se la chiamata non riesce, è possibile chiamare la funzione Win32 GetLastError per determinare la causa dell'errore.

Osservazioni:

GetFile è una routine di alto livello che gestisce tutto l'overhead associato alla lettura di un file da un server FTP e all'archiviazione locale. Le applicazioni che recuperano solo i dati dei file o che richiedono un controllo di chiusura sul trasferimento del file devono usare OpenFile e CInternetFile::Read .

Se dwFlags è FILE_TRANSFER_TYPE_ASCII, la conversione dei dati di file converte anche i caratteri di controllo e formattazione in equivalenti di Windows. Il trasferimento predefinito è la modalità binaria, in cui il file viene scaricato nello stesso formato archiviato nel server.

Sia pstrRemoteFile che pstrLocalFile possono essere nomi file parzialmente qualificati rispetto alla directory corrente o completi. Una barra rovesciata (\) o una barra (/) può essere usata come separatore di directory per entrambi i nomi. GetFile converte i separatori dei nomi di directory nei caratteri appropriati prima di essere usati.

Eseguire l'override dell'impostazione predefinita dwContext per impostare l'identificatore di contesto su un valore scelto. L'identificatore di contesto è associato a questa operazione specifica dell'oggetto CFtpConnection creato dal relativo oggetto CInternetSession . Il valore viene restituito a CInternetSession::OnStatusCallback per fornire lo stato sull'operazione con cui viene identificato. Per altre informazioni sull'identificatore di contesto, vedere l'articolo Passaggi preliminari su Internet: WinInet .

CFtp Connessione ion::OpenFile

Chiamare questa funzione membro per aprire un file che si trova in un server FTP per la lettura o la scrittura.

CInternetFile* OpenFile(
    LPCTSTR pstrFileName,
    DWORD dwAccess = GENERIC_READ,
    DWORD dwFlags = FTP_TRANSFER_TYPE_BINARY,
    DWORD_PTR dwContext = 1);

Parametri

pstrFileName
Puntatore a una stringa contenente il nome del file da aprire.

dwAccess
Determina la modalità di accesso al file. Può essere GENERIC_READ o GENERIC_WRITE, ma non entrambi.

dwFlags
Specifica le condizioni in base alle quali si verificano i trasferimenti successivi. Può trattarsi di una delle seguenti costanti FTP_TRANSFER_*:

  • FTP_TRANSFER_TYPE_ASCII Il file viene trasferito utilizzando il metodo di trasferimento FTP ASCII (Type A). Converte le informazioni di controllo e formattazione in equivalenti locali.

  • FTP_TRANSFER_TYPE_BINARY Il file trasferisce i dati usando il metodo di trasferimento Image (Type I) ftp. Il file trasferisce i dati esattamente come esistono, senza modifiche. Si tratta del metodo di trasferimento predefinito.

dwContext
Identificatore di contesto per l'apertura del file. Per altre informazioni su dwContext, vedere Osservazioni.

Valore restituito

Puntatore a un oggetto CInternetFile .

Osservazioni:

OpenFile deve essere usato nelle situazioni seguenti:

  • Un'applicazione dispone di dati che devono essere inviati e creati come file nel server FTP, ma che non si trovano in un file locale. Una volta OpenFile aperto un file, l'applicazione usa CInternetFile::Write per inviare i dati del file FTP al server.

  • Un'applicazione deve recuperare un file dal server e inserirlo nella memoria controllata dall'applicazione, anziché scriverlo su disco. L'applicazione usa CInternetFile::Read dopo aver usato OpenFile per aprire il file.

  • Un'applicazione richiede un livello di controllo fine su un trasferimento di file. Ad esempio, l'applicazione potrebbe voler visualizzare un controllo di stato indica lo stato di avanzamento del trasferimento del file durante il download di un file.

Dopo aver chiamato OpenFile e finché non si chiama CInternetFile::Close, l'applicazione può chiamare solo CInternetFile::Read, CInternetFile::Write, CInternetConnection::Closeo CFtpFileFind::FindFile. Le chiamate ad altre funzioni FTP per la stessa sessione FTP avranno esito negativo e impostano il codice di errore su FTP_ETRANSFER_IN_PROGRESS.

Il parametro pstrFileName può essere un nome file parzialmente qualificato rispetto alla directory corrente o completo. Una barra rovesciata (\) o una barra (/) può essere usata come separatore di directory per entrambi i nomi. OpenFile converte i separatori dei nomi di directory nei caratteri appropriati prima di usarlo.

Eseguire l'override dell'impostazione predefinita dwContext per impostare l'identificatore di contesto su un valore scelto. L'identificatore di contesto è associato a questa operazione specifica dell'oggetto CFtpConnection creato dal relativo oggetto CInternetSession . Il valore viene restituito a CInternetSession::OnStatusCallback per fornire lo stato sull'operazione con cui viene identificato. Per altre informazioni sull'identificatore di contesto, vedere l'articolo Passaggi preliminari su Internet: WinInet .

CFtp Connessione ion::P utFile

Chiamare questa funzione membro per archiviare un file in un server FTP.

BOOL PutFile(
    LPCTSTR pstrLocalFile,
    LPCTSTR pstrRemoteFile,
    DWORD dwFlags = FTP_TRANSFER_TYPE_BINARY,
    DWORD_PTR dwContext = 1);

Parametri

pstrLocalFile
Puntatore a una stringa contenente il nome del file da inviare dal sistema locale.

pstrRemoteFile
Puntatore a una stringa contenente il nome del file da creare nel server FTP.

dwFlags
Specifica le condizioni in base alle quali si verifica il trasferimento del file. Può essere una delle costanti FTP_TRANSFER_* descritte in OpenFile.

dwContext
Identificatore di contesto per l'inserimento del file. Per altre informazioni su dwContext, vedere Osservazioni.

Valore restituito

Diverso da zero se ha esito positivo; in caso contrario 0. Se la chiamata non riesce, è possibile chiamare la funzione Win32 GetLastError per determinare la causa dell'errore.

Osservazioni:

PutFile è una routine di alto livello che gestisce tutte le operazioni associate all'archiviazione di un file in un server FTP. Le applicazioni che inviano solo dati o che richiedono un maggiore controllo sul trasferimento dei file devono usare OpenFile e CInternetFile::Write.

Esegue l'override dell'impostazione predefinita dwContext per impostare l'identificatore di contesto su un valore di propria scelta. L'identificatore di contesto è associato a questa operazione specifica dell'oggetto CFtpConnection creato dal relativo oggetto CInternetSession . Il valore viene restituito a CInternetSession::OnStatusCallback per fornire lo stato sull'operazione con cui viene identificato. Per altre informazioni sull'identificatore di contesto, vedere l'articolo Passaggi preliminari su Internet: WinInet .

CFtp Connessione ion::Remove

Chiamare questa funzione membro per eliminare il file specificato dal server connesso.

BOOL Remove(LPCTSTR pstrFileName);

Parametri

pstrFileName
Puntatore a una stringa contenente il nome del file da rimuovere.

Valore restituito

Diverso da zero se ha esito positivo; in caso contrario 0. Se la chiamata non riesce, è possibile chiamare la funzione Win32 GetLastError per determinare la causa dell'errore.

Osservazioni:

Il parametro pstrFileName può essere un nome file parzialmente qualificato rispetto alla directory corrente o completo. Una barra rovesciata (\) o una barra (/) può essere usata come separatore di directory per entrambi i nomi. La Remove funzione converte i separatori dei nomi di directory nei caratteri appropriati prima di essere usati.

CFtp Connessione ion::RemoveDirectory

Chiamare questa funzione membro per rimuovere la directory specificata dal server connesso.

BOOL RemoveDirectory(LPCTSTR pstrDirName);

Parametri

pstrDirName
Puntatore a una stringa contenente la directory da rimuovere.

Valore restituito

Diverso da zero se ha esito positivo; in caso contrario 0. Se la chiamata non riesce, è possibile chiamare la funzione Win32 GetLastError per determinare la causa dell'errore.

Osservazioni:

Usare GetCurrentDirectory per determinare la directory di lavoro corrente del server. Non presupporre che il sistema remoto abbia connesso l'utente alla directory radice.

Il parametro pstrDirName può essere un nome file parzialmente o completo rispetto alla directory corrente. Una barra rovesciata (\) o una barra (/) può essere usata come separatore di directory per entrambi i nomi. RemoveDirectory converte i separatori dei nomi di directory nei caratteri appropriati prima di essere usati.

CFtp Connessione ion::Rename

Chiamare questa funzione membro per rinominare il file specificato nel server connesso.

BOOL Rename(
    LPCTSTR pstrExisting,
    LPCTSTR pstrNew);

Parametri

pstrExisting
Puntatore a una stringa contenente il nome corrente del file da rinominare.

pstrNew
Puntatore a una stringa contenente il nuovo nome del file.

Valore restituito

Diverso da zero se ha esito positivo; in caso contrario 0. Se la chiamata non riesce, è possibile chiamare la funzione Win32 GetLastError per determinare la causa dell'errore.

Osservazioni:

I parametri pstrExisting e pstrNew possono essere un nome file parzialmente qualificato rispetto alla directory corrente o completo. Una barra rovesciata (\) o una barra (/) può essere usata come separatore di directory per entrambi i nomi. Rename converte i separatori dei nomi di directory nei caratteri appropriati prima di essere usati.

CFtp Connessione ion::SetCurrentDirectory

Chiamare questa funzione membro per passare a una directory diversa nel server FTP.

BOOL SetCurrentDirectory(LPCTSTR pstrDirName);

Parametri

pstrDirName
Puntatore a una stringa contenente il nome della directory.

Valore restituito

Diverso da zero se ha esito positivo; in caso contrario 0. Se la chiamata non riesce, è possibile chiamare la funzione Win32 GetLastError per determinare la causa dell'errore.

Osservazioni:

Il parametro pstrDirName può essere un nome file parzialmente o completo rispetto alla directory corrente. Una barra rovesciata (\) o una barra (/) può essere usata come separatore di directory per entrambi i nomi. SetCurrentDirectory converte i separatori dei nomi di directory nei caratteri appropriati prima di essere usati.

Usare GetCurrentDirectory per determinare la directory di lavoro corrente di un server FTP. Non presupporre che il sistema remoto abbia connesso l'utente alla directory radice.

Vedi anche

Classe CInternetConnection
Grafico della gerarchia
Classe CInternetConnection
Classe CInternetSession