FTP C# [Resolvido]

Me foi “pedido” para fazer um serviço em C# para upload de arquivo e gostaria de saber se alguém já fez algo do tipo e poderia me ajudar…
Estou recebendo o erro : The remote server returned an error: (550) File unavailable (e.g., file not found, no access).
E nada qye achei no Senhor Google me ajudou ainda…

Obrigado a atenção.

Jovem,

Poste o código.

Abs,

[quote=Kanin Dragon]Jovem,

Poste o código.

Abs,[/quote]

private string subirAnexo(byte[] Buffer, string LoginRemetente, string NomeAnexo)

{

string UrlFtp = "ftp://url";

string UsuarioFtp = "user";

string SenhaUsuarioFtp = "password";

if (!WebRequestMethods.Ftp.ListDirectoryDetails.Contains(UrlFtp + "/" + LoginRemetente))

{

FtpWebRequest CriarPasta = (FtpWebRequest)FtpWebRequest.Create(UrlFtp + "/" + LoginRemetente);

CriarPasta.KeepAlive = false;

CriarPasta.UseBinary = true;

CriarPasta.Credentials = new NetworkCredential(UsuarioFtp, SenhaUsuarioFtp);

CriarPasta.Method = WebRequestMethods.Ftp.MakeDirectory;

FtpWebResponse RespostaCriarPasta = (FtpWebResponse)CriarPasta.GetResponse();

RespostaCriarPasta.Close();

}

if (WebRequestMethods.Ftp.ListDirectoryDetails.Contains(UrlFtp + "/" + LoginRemetente + "/" + NomeAnexo))

{

NomeAnexo = "(2) " + NomeAnexo;

}

FtpWebRequest RequestUpload = (FtpWebRequest)FtpWebRequest.Create(UrlFtp + "/" + LoginRemetente + "/" + NomeAnexo);

RequestUpload.Credentials = new NetworkCredential(UsuarioFtp, SenhaUsuarioFtp);

RequestUpload.UsePassive = true;

RequestUpload.UseBinary = true;

RequestUpload.KeepAlive = false;

//RequestUpload.Method = WebRequestMethods.Ftp.UploadFile;

Stream RequestStream = RequestUpload.GetRequestStream();

RequestStream.Write(Buffer, 0, Buffer.Length);

RequestStream.Close();

return "\n\n\nAnexo será encontrado em: " + UrlFtp + "/" + LoginRemetente + "/" + NomeAnexo;

}

Não tem identação aqui porque tô fazendo por acesso remoto e veio assim =/

A pasta está sendo criada, porém na hora de mandar o arquivo ele recebe a excessão

Consegir deixar de um jeito aceitável (funcionando)
Postarei o código aqui pra se alguém tiver o mesmo problema no futuro, ou tiver que fazer a mesma coisa

private string subirArquivo(byte[] Buffer, string UsuarioDoFtp, string NomeArquivo)
{
	string UrlFtp = "ftp://LocalFtp";
	string UsuarioFtp = "usuario";
	string SenhaUsuarioFtp = "senha";

	//Tenta criar a pasta...
	try
	{
		FtpWebRequest CriarPasta = (FtpWebRequest)FtpWebRequest.Create(UrlFtp + "/" + UsuarioDoFtp);
		CriarPasta.KeepAlive = false;
		CriarPasta.UseBinary = true;
		CriarPasta.Credentials = new NetworkCredential(UsuarioFtp, SenhaUsuarioFtp);
		CriarPasta.Method = WebRequestMethods.Ftp.MakeDirectory;
		FtpWebResponse RespostaCriarPasta = (FtpWebResponse)CriarPasta.GetResponse();
		RespostaCriarPasta.Close();
	}
	catch (Exception e)
	{
		//Pasta já existe
	}

	FtpWebRequest Request;
	Stream RequestStream;

	//Verifica se o arquivo já existe
	int Contador = 2;
	string StringAuxiliar = NomeArquivo;
	while (true)
	{
		Request = (FtpWebRequest)FtpWebRequest.Create(UrlFtp + "/" + UsuarioDoFtp + "/" + NomeArquivo);
		Request.Credentials = new NetworkCredential(UsuarioFtp, SenhaUsuarioFtp);
		Request.Method = WebRequestMethods.Ftp.GetFileSize;
		try
		{
			FtpWebResponse resposta = (FtpWebResponse)Request.GetResponse();
			//Muda o nome porque o arquivo já existe
			NomeArquivo = "(" + Contador + ")" + StringAuxiliar;
			Contador++;
		}
		catch (WebException ex)
		{
			FtpWebResponse resposta = (FtpWebResponse)ex.Response;
			if (resposta.StatusCode == FtpStatusCode.ActionNotTakenFileUnavailable)
			{
				//Arquivo no existe no local
				break;
			}
		}

	}//Terminou de verificar existência

	Request = (FtpWebRequest)FtpWebRequest.Create(UrlFtp + "/" + UsuarioDoFtp + "/" + NomeArquivo);
	Request.Credentials = new NetworkCredential(UsuarioFtp, SenhaUsuarioFtp);
	Request.UsePassive = true;
	Request.UseBinary = true;
	Request.KeepAlive = false;
	Request.Method = WebRequestMethods.Ftp.UploadFile;
	RequestStream = Request.GetRequestStream();

	RequestStream.Write(Buffer, 0, Buffer.Length);

	RequestStream.Close();

	return "\n\n\nAnexo ser encontrado em: " + UrlFtp + "/" + UsuarioDoFtp + "/" + NomeArquivo;
}