I used the following source code for upload file excel and pdf, but after the file was moved to server, the file is corrupt. I think the problem is on encoding process Encoding.UTF8.GetBytes(sourceStream.ReadToEnd());
, but I don't know how to resolve it.
public static void sampleUpload()
{
// Get the object used to communicate with the server.
FtpWebRequest request = (FtpWebRequest)WebRequest.Create("ftp://100.165.80.15:21/output/Group Dealer, Main Dealer, Zone, Branch, and Destination Report_20120927105003.pdf");
request.Method = WebRequestMethods.Ftp.UploadFile;
// This example assumes the FTP site uses anonymous logon.
request.Credentials = new NetworkCredential("toc", "fid123!!");
// Copy the contents of the file to the request stream.
StreamReader sourceStream = new StreamReader("D:\\Group Dealer, Main Dealer, Zone, Branch, and Destination Report_20120927105003.pdf");
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();
FtpWebResponse response = (FtpWebResponse)request.GetResponse();
Console.WriteLine("Upload File Complete, status {0}", response.StatusDescription);
response.Close();
}
You can try to use BufferedStream that deal with raw bytes.
Don't read binary files as text. Use Stream.CopyTo method (or equivalent code if you can't use .Net 4.0)
In my situation I couldn't use Stream.Copy as suggested by Alexei in his answer because I was using .NET Framework 2.0 I instead used only a Stream to read binary files as Streamreader is designed to read text files only: