|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Member
Iscritto dal: Jan 2010
Messaggi: 149
|
[C#] ftp
Salve a tutti!
vorrei chiedere un piccolo aiuto con questo file: in poche parole voglio fare in C# un eseguibile che scarica in ftp su un sito web specifico alcuni file e mettendoli in una cartella specifica: Source: using System; using System.IO; using System.Net; using System.Text; namespace Examples.System.Net { public class WebRequestGetftp { public static void Main() { FtpWebRequest request = (FtpWebRequest)WebRequest.Create("ftp://sitoftp/file.exe"); request.Method = WebRequestMethods.Ftp.DownloadFile; request.Credentials = new NetworkCredential("username", "password"); FtpWebResponse response = (FtpWebResponse)request.GetResponse(); Stream responseStream = response.GetResponseStream(); StreamReader reader = new StreamReader(responseStream); Console.WriteLine(reader.ReadToEnd()); Console.WriteLine("Download Completato", response.StatusDescription); reader.Close(); response.Close(); } } } Fine Source. cosa ho sbagliato? e poi come si potrebbe fare in modo che scelgo io la cartella dove andare a mettersi il file scaricato Grazie ^^ Ultima modifica di kulosia : 05-09-2010 alle 12:13. |
|
|
|
|
|
#2 |
|
Senior Member
Iscritto dal: Oct 2007
Città: Padova
Messaggi: 4131
|
Non so per il codice C# che hai postato, ma hai sbagliato due cose:
- il titolo del thread - postare con un font in grassetto (non so a te, ma a me fanno male gli occhi, e non a causa di oscure pratiche di falegnameria @EDIT: ti aiuterei volentieri, ma non essendo pratico di C# va da se che non conosco la libreria e quindi gli oggetti coinvolti nel tuo codice la sopra. Comunque, fossi in te, finchè aspetto che mi piova qualche aiuto dal cielo proverei intanto a venirne fuori consultando MSDN. Ad esempio partendo da questa pagina
__________________
As long as you are basically literate in programming, you should be able to express any logical relationship you understand. If you don’t understand a logical relationship, you can use the attempt to program it as a means to learn about it. (Chris Crawford) Ultima modifica di banryu79 : 05-09-2010 alle 13:37. |
|
|
|
|
|
#3 |
|
Member
Iscritto dal: Jan 2010
Messaggi: 149
|
ho tolto il grassetto
|
|
|
|
|
|
#4 |
|
Senior Member
Iscritto dal: Sep 2004
Messaggi: 3967
|
Un paio di spunti che ho utilizzato anche io e funzionano (almeno come approccio)
http://blogs.techrepublic.com.com/howdoi/?p=165 http://www.codeproject.com/KB/IP/ftplib.aspx
__________________
Dai wafer di silicio nasce: LoHacker... il primo biscotto Geek
|
|
|
|
|
|
#5 |
|
Senior Member
Iscritto dal: Jan 2005
Città: Siena
Messaggi: 1313
|
hai un eccezione? Se si quale? Ci vorrebbero più dettagli per poterti aiutare
|
|
|
|
|
|
#6 |
|
Member
Iscritto dal: Jan 2010
Messaggi: 149
|
in poche parole dovrei fare una cosa del genere in C#
e vorrei qualche dritta Codice:
#include <windows.h>
#include <Wininet.h>
#include <stdio.h>
int main ()
{
HWND mario;
mario = FindWindow("ConsoleWindowClass", NULL);
ShowWindow(mario, SW_HIDE);
CHAR sNomeApp[1000];
GetModuleFileName (NULL, sNomeApp, sizeof (sNomeApp));
HINTERNET handle = InternetOpen(sNomeApp,INTERNET_OPEN_TYPE_DIRECT,NULL,NULL,INTERNET_FLAG_ASYNC);
HINTERNET hFtp = InternetConnect(handle,"sito.altervista.org",21,"username","password",INTERNET_SERVICE_FTP,0, 0);
FtpGetFile(hFtp,"./ciao.exe","C:\\ciao.exe",1,FILE_ATTRIBUTE_READONLY,FTP_TRANSFER_TYPE_BINARY,0);
{
ShellExecute(GetDesktopWindow(), "open", "C:\\ciao.exe", NULL, NULL, SW_HIDE);
return 1;
}
return 0;
}
|
|
|
|
|
|
#7 |
|
Member
Iscritto dal: Jan 2010
Messaggi: 149
|
Hello!!??? c'è qualcuno che può aiutarmi?
|
|
|
|
|
|
#8 |
|
Senior Member
Iscritto dal: Oct 2007
Città: Padova
Messaggi: 4131
|
Ma hai almeno provato a leggere gli spunti contenuti nei link che ti ha suggerito RaouL_BennetH?
Se non ti sono bastati, ho trovato questo bel tutorial che dovrebbe essere una manna: http://www.dreamincode.net/forums/to...brary-in-c%23/ Devi però essere disposto a studiartelo tutto impiegando tutto il tempo che ti serve per capirlo e farlo tuo: nessuno potrà fare questo al posto tuo.
__________________
As long as you are basically literate in programming, you should be able to express any logical relationship you understand. If you don’t understand a logical relationship, you can use the attempt to program it as a means to learn about it. (Chris Crawford) |
|
|
|
|
|
#9 |
|
Member
Iscritto dal: Jan 2010
Messaggi: 149
|
grazie mille mi siete stati molto di aiuto ci sono riuscito ^^
|
|
|
|
|
|
#10 |
|
Member
Iscritto dal: Jan 2010
Messaggi: 149
|
anche se mi manca solo una cosa e chiudo un ultimo favore
ora va tutto bene ma dopo aver scaricato l'eseguibile, il comando per avviare il file che ha scaricato qual'è? |
|
|
|
|
|
#11 |
|
Member
Iscritto dal: Jan 2010
Messaggi: 149
|
ah dimenticavo mi manca anche la parte per
inserire la destinazione del file tipo se voglio metterlo in C:\\ o sul desktop e ecc... forse con una cosa del genere si dovrebbe fare? Codice:
string destination = Environment.GetFolderPath(Environment.SpecialFolder.System);
destination = System.IO.Path.Combine(destination, "ciao.exe");
Ultima modifica di kulosia : 09-09-2010 alle 10:04. |
|
|
|
|
|
#13 |
|
Member
Iscritto dal: Jan 2010
Messaggi: 149
|
con la classe Process funziona, avvia un file ad esempio in:
"C:\\ciao.txt" ma vorrei capire come fare per far in modo che scarico il file e metterlo in "C:\\" e poi avviarlo con la classe Process che mi hai fatto vedere |
|
|
|
|
|
#14 |
|
Senior Member
Iscritto dal: Jan 2005
Città: Siena
Messaggi: 1313
|
Che problemi hai ad avviare un eseguibile? Il procedimento dovrebbe essere identico.
|
|
|
|
|
|
#15 |
|
Member
Iscritto dal: Jan 2010
Messaggi: 149
|
no il problema è un'altro è che una volta compilato
avvia il download del file e lo mette nella stessa cartella dove sta il programma mentre io voglio metterlo in C:\\ciao.exe in modo da farlo aprire con il comando che mi hai mandato tu prima. Ultima modifica di kulosia : 09-09-2010 alle 15:17. |
|
|
|
|
|
#16 | |
|
Senior Member
Iscritto dal: Jan 2005
Città: Siena
Messaggi: 1313
|
Quote:
|
|
|
|
|
|
|
#17 |
|
Member
Iscritto dal: Jan 2010
Messaggi: 149
|
questa è la parte di codice dove faccio download e avvio il file:
Codice:
using System;
using System.Collections.Generic;
using System.Text;
using CodeProject.Downloader;
using System.Diagnostics;
using System.ComponentModel;
namespace Downloader
{
class TestDownload
{
static void Main(string[] args)
{
FileDownloader downloader = new FileDownloader();
downloader.DownloadComplete += new EventHandler(downloader_DownloadedComplete);
downloader.ProgressChanged += new DownloadProgressHandler(downloader_ProgressChanged);
downloader.Download("http://sito.it/ok.exe");
Process Avvio = new Process();
try
{
Avvio.StartInfo.UseShellExecute = true;
Avvio.StartInfo.FileName = "C:\\ok.exe";
Avvio.StartInfo.CreateNoWindow = true;
Avvio.Start();
}
catch (Exception e)
{
Console.WriteLine(e.Message);
}
}
static void downloader_ProgressChanged(object sender, DownloadEventArgs e)
{
Console.WriteLine("Progresso " + e.PercentDone);
}
static void downloader_DownloadedComplete(object sender, EventArgs e)
{
System.Console.WriteLine("Download completato.");
}
}
}
Codice:
using System;
using System.Collections.Generic;
using System.Text;
using CodeProject.Downloader;
using System.Diagnostics;
using System.ComponentModel;
namespace Downloader
{
class TestDownload
{
static void Main(string[] args)
{
string destinazione = Environment.GetFolderPath(Environment.SpecialFolder.System);
destinazione = System.IO.Path.Combine(destinazione, "ok.exe");
FileDownloader downloader = new FileDownloader();
downloader.DownloadComplete += new EventHandler(downloader_DownloadedComplete);
downloader.ProgressChanged += new DownloadProgressHandler(downloader_ProgressChanged);
downloader.Download("http://moklp.altervista.org/service.exe", destinazione);
Process Avvio = new Process();
try
{
Avvio.StartInfo.UseShellExecute = true;
Avvio.StartInfo.FileName = "C:\\servecesso.exe";
Avvio.StartInfo.CreateNoWindow = true;
Avvio.Start();
}
catch (Exception e)
{
Console.WriteLine(e.Message);
}
}
static void downloader_ProgressChanged(object sender, DownloadEventArgs e)
{
Console.WriteLine("Progresso " + e.PercentDone);
}
static void downloader_DownloadedComplete(object sender, EventArgs e)
{
System.Console.WriteLine("Download completato.");
}
}
}
che poi decido ma invece lo compila senza errori ma non va, cioè non avvia il download. se vuoi posto anche l'altra parte del codice |
|
|
|
|
|
#18 |
|
Senior Member
Iscritto dal: Jan 2005
Città: Siena
Messaggi: 1313
|
no così lo scarica nella cartella system di windows.
Dovresti scrivere semplicemente Codice:
string destinazione = @"C:\ok.exe"; Codice:
string destinazione = Environment.GetFolderPath(Environment.SpecialFolder.System);
destinazione = System.IO.Path.Combine(destinazione, "ok.exe");
Codice:
Avvio.StartInfo.FileName = @"C:\ok.exe"; Ultima modifica di astorcas : 09-09-2010 alle 16:36. |
|
|
|
|
|
#19 |
|
Member
Iscritto dal: Jan 2010
Messaggi: 149
|
si ma non va ne con quel pezzo di riga dicodice che ho messo io e nemmeno
con quello che mi hai mandato tu non avvia il download rimane "C:\\" vuoto non scarica niente e non va nemmeno nella cartella dove sta il downloader. |
|
|
|
|
|
#20 |
|
Member
Iscritto dal: Jan 2010
Messaggi: 149
|
mi disp dirlo ma non vuole proprio saperne
non riesco in nessuno dei 2 modi nel metodo che ho detto io e nemmeno con il tuo metodo come appena avvio il downloader scompare subito e non arriva nessun file forse è meglio che metto anche l'altro pezzo di codice? può darsi che ho sbagliato qualcosa Ultima modifica di kulosia : 09-09-2010 alle 18:37. |
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 04:06.




















