Próbuję przesłać plik na serwer FTP za pomocą C #. Plik jest przesyłany, ale z zerową liczbą bajtów.
private void button2_Click(object sender, EventArgs e)
{
var dirPath = @"C:/Documents and Settings/sander.GD/Bureaublad/test/";
ftp ftpClient = new ftp("ftp://example.com/", "username", "password");
string[] files = Directory.GetFiles(dirPath,"*.*");
var uploadPath = "/httpdocs/album";
foreach (string file in files)
{
ftpClient.createDirectory("/test");
ftpClient.upload(uploadPath + "/" + Path.GetFileName(file), file);
}
if (string.IsNullOrEmpty(txtnaam.Text))
{
MessageBox.Show("Gelieve uw naam in te geven !");
}
}
c#
.net
file-upload
ftp
webvision
źródło
źródło
Odpowiedzi:
Istniejące odpowiedzi są prawidłowe, ale po co ponownie wymyślać koło i zawracać sobie głowę
WebRequest
typami niższych poziomów, podczas gdyWebClient
już ładnie implementuje przesyłanie FTP:źródło
Jak używać
użyj tego w swoim foreach
i wystarczy tylko raz utworzyć folder
aby utworzyć folder
źródło
request.GetResponse()
. Bez tego przesyłanie (słusznie) nie będzie działać na niektórych serwerach. Zobacz jak: przesyłanie plików przez FTP .Najprostszy sposób
Najprostszym sposobem przesłania pliku na serwer FTP przy użyciu platformy .NET jest użycie
WebClient.UploadFile
metody :Zaawansowane opcje
Jeśli potrzebujesz większej kontroli, której
WebClient
nie oferuje (jak szyfrowanie TLS / SSL , tryb ASCII, tryb aktywny itp.), UżyjFtpWebRequest
. Prostym sposobem jest po prostu skopiowanieFileStream
do strumienia FTP za pomocąStream.CopyTo
:Monitorowanie postępów
Jeśli chcesz monitorować postęp przesyłania, musisz samodzielnie skopiować zawartość fragmentami:
Aby uzyskać postęp w interfejsie GUI (WinForms
ProgressBar
), zobacz przykład w języku C # pod adresem:How can we show progress bar for upload with FtpWebRequest
Przesyłanie folderu
Jeśli chcesz przesłać wszystkie pliki z folderu, zobacz
Przesyłanie katalogu plików na serwer FTP za pomocą WebClient .
W przypadku przekazywania cyklicznego zobacz przekazywanie cykliczne
na serwer FTP w języku C #
źródło
U mnie działa:
Nie możesz odczytać parametru wysyłania pliku w swoim kodzie, ponieważ jest to tylko nazwa pliku.
Użyj następujących:
Aby pobrać plik i przekazać go do
Send
metody.źródło
źródło
W pierwszym przykładzie należy je zmienić na:
Pierwszy kolor, a potem zamknięcie.
źródło
To działa dla mnie, ta metoda przeniesie plik do lokalizacji w sieci. Korzysta z biblioteki SSH.NET.2013.4.7, którą można po prostu pobrać za darmo.
źródło
data publikacji: 26.06.2018
https://docs.microsoft.com/en-us/dotnet/framework/network-programming/how-to-upload-files-with-ftp
źródło
Zauważyłem, że -
Przygotowałem metodę, która działa w ten sposób, możesz zastąpić wartość zmiennej ftpurl parametrem TargetDestinationPath. Przetestowałem tę metodę w aplikacji winForms:
Daj mi znać w razie jakichkolwiek problemów lub oto jeszcze jeden link, który może Ci pomóc:
https://msdn.microsoft.com/en-us/library/ms229715(v=vs.110).aspx
źródło