Reputation: 1358
I'm using an FTP server in c# and I have to upload files of different typer (.png, .xlsx, docx....), at the moment the upload is done for every file type, but if I try to open a file (except for .txt) it says that the file is corrupted. what am I doing wrong?
thank you
FtpWebResponse response = null;
try
{
FtpWebRequest request = (FtpWebRequest)WebRequest.Create(url);
if (request == null)
{
result.SetError(Translate.InvalidUrl, url);
return false;
}
request.Method = WebRequestMethods.Ftp.UploadFile;
request.UseBinary = true;
request.Credentials = new NetworkCredential(username, password);
if (sourceStream == null)
{
result.SetError(Translate.FileErrorReading);
return false;
}
byte[] fileContents = Encoding.UTF8.GetBytes(sourceStream.ReadToEnd());
sourceStream.Close();
request.ContentLength = fileContents.Length;
Stream requestStream = request.GetRequestStream();
requestStream.Write(fileContents, 0, fileContents.Length);
requestStream.Close();
response = (FtpWebResponse)request.GetResponse();
result.SetInformation(Translate.FileSuccefullUpload, filename);
}
catch (Exception e)
{
result.SetError(e.Message);
return false;
}
finally
{
if (response != null)
response.Close();
}
return result.Successful;
}
Upvotes: 2
Views: 1075
Reputation: 4628
Why are you using Encoding.UTF8.GetBytes
?
This trim bytes.
You should read your data in binary mode (i.e. File.ReadAllBytes
).
Upvotes: 6