![]() |
![]() |
| Paypal | FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
|||||||
| Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Buscar | Temas de Hoy | Marcar Foros Como Leídos |
![]() |
|
|
Herramientas | Buscar en Tema | Desplegado |
|
|
|
#1
|
|||
|
|||
|
...... He conseguido hacer lo que queria bajarme las carpetas y subcarpetas del Hosting, supongo qur habra una manera mucho mas facil de Hacerlo pero a mi me vale... la pongo por si a alguien le sirve
Código:
void __fastcall TForm1::Button1Click(TObject *Sender)
{
Ftp = new TIdFTP(NULL);
AnsiString PathApp = ExtractFilePath(Application->ExeName);
AnsiString CTemp = PathApp + "Temp\\";
mkdir(CTemp.c_str());
Ftp->Host = "host.com";
Ftp->Username = "1234567";
Ftp->Password = "*******";
//Conecto con servidor
try
{
Ftp->Connect();
if(Ftp->Connected())
{
try
{
Ftp->ChangeDir("/Principal"); //Carpeta Principal
//Actualizo//
NewCarpeta(CTemp);
//Desconecto
Ftp->Disconnect();
}
catch (...)
{
if (MessageDlg("No se han podido actualizar los Datos",
mtError,TMsgDlgButtons() << mbOK, 0) == mrOk){return;}
}
}
}
catch (...)
{
if (MessageDlg("No ha sido posible establecer la conexion",
mtError,TMsgDlgButtons() << mbOK, 0) == mrOk){return;}
}
delete Ftp;Ftp = NULL;
}
//-----------------------------------------------------------------------//
void TForm1::NewCarpeta(AnsiString Path)
{
std::auto_ptr<TStringList> Elementos (new TStringList);
Ftp->List(Elementos.get());
int NumElemnt = Ftp->DirectoryListing->Count;
bool *IsDir = new bool[NumElemnt];
//Conozco cuales son sus Subcarpetas
for (int i=2;i<NumElemnt;i++)
{
TIdFTPListItem* ListItem = Ftp->DirectoryListing->Items[i];
Elementos->Strings[i] = ListItem->FileName;
IsDir[i]=ListItem->ItemType == ditDirectory;
}
//Copio
for (int i=2;i<NumElemnt; i++)
{
//Si es una SubCarpeta
if(IsDir[i])
{
Ftp->ChangeDir(Elementos->Strings[i]);
mkdir((Path+Elementos->Strings[i] + "\\").c_str());
NewCarpeta(Path+Elementos->Strings[i] + "\\");
}
else
{
//Bajo Archivo
AnsiString Copia = Path + Elementos->Strings[i];
Ftp->Get(Elementos->Strings[i],Copia,true);
}
}
Ftp->ChangeDirUp();
}
|
|
#2
|
|||
|
|||
|
He solucionado el error Socket error #10054 Connection reset by peer que me daba en uno de los hosting al querer bajar un archivo....he asignado una conexion pasiva al idFtp de la forma
Código:
Ftp->Passive = true; ![]() Nota: Tabajando con los dos hosting me he dado cuenta de que a la hora de cargar la lista de elementos con Código:
Ftp->List(TSTringListElementos); |
![]() |
| Herramientas | Buscar en Tema |
| Desplegado | |
|
|
Temas Similares
|
||||
| Tema | Autor | Foro | Respuestas | Último mensaje |
| Bajar un archivo de mi alojamiento desde delphi | xio | Internet | 5 | 22-01-2008 20:14:20 |
| Dónde puedo bajar el archivo BDE_ENT.Msm? | Pikot | Conexión con bases de datos | 2 | 07-02-2007 19:38:21 |
| Como puedo bajar un archivo de una pagina web ? | Raptor | Varios | 5 | 22-09-2004 22:37:01 |
| Bajar un archivo de www? | kolokol | Internet | 6 | 12-02-2004 16:52:38 |
|