Tento fazer upload de um arquivo para um servidor FTP com C #. O arquivo é carregado, mas com zero bytes.
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
fonte
fonte
Respostas:
As respostas existentes são válidas, mas por que reinventar a roda e se preocupar com
WebRequest
tipos de nível inferior enquantoWebClient
já implementa o upload de FTP de forma organizada:fonte
Como usar
use isso em seu foreach
e você só precisa criar a pasta uma vez
para criar uma pasta
fonte
request.GetResponse()
. Sem ele, o upload não funcionará (com razão) em alguns servidores. Consulte Como: Carregar arquivos com FTP .Caminho mais fácil
A maneira mais comum de fazer upload de um arquivo para um servidor FTP usando o .NET framework é usando o
WebClient.UploadFile
método :Opções avançadas
Se precisar de um controle maior, que
WebClient
não oferece (como criptografia TLS / SSL , modo ASCII, modo ativo, etc), useFtpWebRequest
. A maneira fácil é apenas copiar umFileStream
para um fluxo de FTP usandoStream.CopyTo
:Monitoramento de progresso
Se você precisar monitorar o progresso de um upload, deverá copiar o conteúdo por partes você mesmo:
Para o progresso da GUI (WinForms
ProgressBar
), consulte o exemplo C # em:Como podemos mostrar a barra de progresso para upload com FtpWebRequest
Carregando pasta
Se você deseja carregar todos os arquivos de uma pasta, consulte
Carregar diretório de arquivos para o servidor FTP usando WebClient .
Para um upload recursivo, consulte
Upload recursivo para o servidor FTP em C #
fonte
O seguinte funciona para mim:
Você não pode ler o parâmetro de envio do arquivo em seu código, pois é apenas o nome do arquivo.
Use o seguinte:
Para obter o arquivo para que você possa passá-lo para o
Send
método.fonte
fonte
No primeiro exemplo, deve ser alterado para:
Primeiro enxágue e depois feche.
fonte
Isso funciona para mim, esse método fará o SFTP de um arquivo para um local na sua rede. Ele usa a biblioteca SSH.NET.2013.4.7. Basta fazer o download gratuitamente.
fonte
data de publicação: 26/06/2018
https://docs.microsoft.com/en-us/dotnet/framework/network-programming/how-to-upload-files-with-ftp
fonte
Eu observei que -
Eu preparei um método que funciona assim, você pode substituir o valor da variável ftpurl pelo parâmetro TargetDestinationPath. Eu testei este método no aplicativo WinForms:
Avise-me caso haja algum problema ou aqui está mais um link que pode ajudá-lo:
https://msdn.microsoft.com/en-us/library/ms229715(v=vs.110).aspx
fonte