Autor
|
Tema: Subir un archivo a un FTP (Leído 5,446 veces)
|
gxg
Desconectado
Mensajes: 37
|
Hola. estoy utilizando este codigo para que mi programa suba un txt a ftp, se conecta bien, pero la funcion FtpPutFile me devuelve false. No se que esta fallando en esta funcion, tengo un archivo llamado texto.txt en la misma carpeta que el programa. ¿Me podeis dar alguna idea de lo que pueda estar fallando? #include <stdio.h> #include <wininet.h> int main(int argc, char *argv[]) { HINTERNET Open=InternetOpen("Explorador",0,NULL,NULL,0); if(Open==NULL){ printf(" - Error al abrir la conexion\n");
return -1; } printf(" HINTERNET Connect=InternetConnect(Open,direccion,21, usuario,contraseña,INTERNET_SERVICE_FTP,0,0); if(Connect==NULL){ InternetCloseHandle(Open); printf(" - Error al conectar con el servidor\n");
getchar(); return -1; } printf("OK\n"); printf(" BOOL File = FtpPutFile(Connect,"texto.txt","texto.txt",FTP_TRANSFER_TYPE_BINARY,0); if (File==FALSE) { InternetCloseHandle(Open); InternetCloseHandle(Connect); printf(" - Error al subir archivo\n");
getchar(); return -1; } printf("OK\n"); InternetCloseHandle(Open); InternetCloseHandle(Connect); getchar(); return 0; }
|
|
|
En línea
|
|
|
|
The Swash
Desconectado
Mensajes: 194
Programmer
|
Amigo, primeramente 2 detalles te recomendaría que llames a la función especificando el tipo de códificación de caracteres ANSI o UNICODE respectivamente A y W. Ejemplo: InternetOpenA InternetConnectA FtpPutFileA FtpSetCurrentDirectoryA Ahora tu problema además puede deberse a que no estableces el directorio donde escribir el archivo para ello te recomiendo FtpSetCurrentDirectoryA Prueba y nos comentas.. Saludos
|
|
|
En línea
|
|
|
|
burbu_1
Desconectado
Mensajes: 159
hamen gaoz
|
hola , he probado tu code y me ha ido bien... además de lo que comenta The Swash, prueba a poner INTERNET_FLAG_PASSIVE en InternetConnect, tal vez sea por el server
|
|
|
En línea
|
|
|
|
Eternal Idol
Kernel coder
Moderador
Desconectado
Mensajes: 5.966
Israel nunca torturó niños, ni lo volverá a hacer.
|
Si uno configura bien el proyecto no hace falta llamar explicitamente a las funciones A o W, las funciones sin estos caracteres son macros que se definen a la correcto automaticamente.
|
|
|
En línea
|
La economía nunca ha sido libre: o la controla el Estado en beneficio del Pueblo o lo hacen los grandes consorcios en perjuicio de éste. Juan Domingo Perón
|
|
|
gxg
Desconectado
Mensajes: 37
|
Bien, ya he conseguido que funcione, pero ahora tengo un pequeño problema. La primera vez que se ejecuta este programa en un equipo salta una alarma del firewall de windows que hay que darle manualmente a desbloquear.
¿Se puede evitar esto de alguna manera?
|
|
« Última modificación: 16 Febrero 2011, 22:46 pm por gxg »
|
En línea
|
|
|
|
Karman
|
Bien, ya he conseguido que funcione, pero ahora tengo un pequeño problema. La primera vez que se ejecuta este programa en un equipo salta una alarma del firewall de windows que hay que darle manualmente a desbloquear. poné el código en una dll e inyectala a otro proceso... je S2
|
|
|
En línea
|
|
|
|
Garfield07
Desconectado
Mensajes: 1.121
¡Este año voy a por todas! JMJ 2011
|
La verdad es que tu código no es una delicia ... Este code de aquí ni está terminado ni probado. Tengo mis reservas para usar fscanf, pero bueno... El code tiene muchísimos errores, lo tienes que retocar un puñado, pero creo que se entiende que es mejor no usar las funciones que tú usas... Mejoras a mi code... 1) User & Pass 2) Mejora mandar archivos. 3) Corrección de fallos de seguridad. Etc... Lo siento, pero estoy cansado . Aquí te lo dejo, con tres puntitos a mejorar... #include <time.h> #include <stdio.h> #include <string.h> #include <stdlib.h> #include <winsock2.h> struct sockaddr_in host; char buffer; SOCKET sockfd; int cont = 0; FILE *fp; int times () { struct tm *ahora; char buffer [40]; ahora = (struct tm *)localtime ((const time_t *)&now ); strftime (buffer , 40, "%d/%m/%Y %H:%M:%S" , ahora ); return 0; } int main (int argc, char *argv []) { WSADATA wsa; WSAStartup(MAKEWORD(2,2),&wsa); struct tm *ahora; char hora [40]; strftime (hora , 40, "%d/%m/%Y %H:%M:%S" , ahora ); printf ("FPPT 1.0 - By Sagrini (2010) - %s\n", hora ); if (argc != 4) { printf ("%s <target_ip> <port> <txt>\n\n", argv [0]); return 1; } if ((sockfd=socket (2, 1, 0))==-1) { printf ("Fatal error creating socket...\n\n"); return 1; } host.sin_port=htons(port); host.sin_family=AF_INET; host.sin_addr.s_addr=inet_addr (IP); if((connect (sockfd, (struct sockaddr*)&host, sizeof (host)))==-1) { printf ("Fatal error connecting socket...\n\n"); return 1; } times (); printf ("Got connection with %s:%d\n", inet_ntoa (host. sin_addr), ntohs (host. sin_port)); if ((fp = fopen (argv [3], "r+"))==-1) { printf ("Fatal error opening %s...\n\n", argv [3]); return 1; } { send (sockfd, buffer, 1, 0); } closesocket (sockfd); printf ("Finishing connection with %s:%d\n\n", inet_ntoa (host. sin_addr), ntohs (host. sin_port)); return 0; }
Sobre la última pregunta... Pues mira, coge y desactiva el firewall xD
|
|
|
En línea
|
* Quiero cambiar el mundo, pero estoy seguro de que no me darían el código fuente. * No estoy tratando de destruir a Microsoft. Ese será tan solo un efecto colateral no intencionado. * Si compila esta bien, si arranca es perfecto. ¡Wiki elhacker.net!Un saludo
|
|
|
gxg
Desconectado
Mensajes: 37
|
Necesito un codigo que anule el firewall de windows sin que el usuario se de cuenta. O que añada a mi programa en las excepciones del firewall. mejor no usar las funciones que tú usas... ¿Por que?
|
|
|
En línea
|
|
|
|
burbu_1
Desconectado
Mensajes: 159
hamen gaoz
|
el firewall de windows solo bloquea las conexiones entrantes y no las salientes.... por qué no usas el MODO PASIVO como te recomendé antes??? HINTERNET Connect=InternetConnect(Open,direccion, 21, usuario,contraseña, INTERNET_SERVICE_FTP, INTERNET_FLAG_PASSIVE, 0);
|
|
|
En línea
|
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
Subir archivo a ftp sin ocx, duda
Programación Visual Basic
|
~~
|
9
|
4,091
|
13 Abril 2007, 21:32 pm
por satan69
|
|
|
Subir archivo a ftp con vb.net
.NET (C#, VB.NET, ASP)
|
.:Dione:.
|
2
|
8,989
|
12 Septiembre 2009, 15:23 pm
por .:Dione:.
|
|
|
subir archivo
Programación Visual Basic
|
federicokpo
|
0
|
1,551
|
22 Septiembre 2009, 08:22 am
por federicokpo
|
|
|
[php] Error al subir archivo
Desarrollo Web
|
Puntoinfinito
|
4
|
2,722
|
7 Enero 2013, 15:37 pm
por Puntoinfinito
|
|
|
Mensaje al subir archivo con codeiginter
Desarrollo Web
|
yoelrodguez
|
2
|
2,279
|
22 Abril 2015, 01:25 am
por yoelrodguez
|
|