简体   繁体   中英

C# Ftp upload binary file wont upload

Trying to Find a file and upload it to ftp server, I think i have everything correct but it doesnt upload anything

string filepath = Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData);
        DirectoryInfo d = new DirectoryInfo(filepath);

        List<String> allDatfiles = Directory
               .GetFiles(filepath, "data.dat", SearchOption.AllDirectories).ToList();

        foreach (string file in allDatfiles)
        {
            FtpWebRequest request = (FtpWebRequest)WebRequest.Create("ftp://www.test.com/Holder");
                request.Method = WebRequestMethods.Ftp.UploadFile;

                request.Credentials = new NetworkCredential("User", "Pass");
                request.UseBinary = true;
                request.UsePassive = true;
                byte[] data = File.ReadAllBytes(file); // Think the problem is with file
                request.ContentLength = data.Length;
                Stream stream = request.GetRequestStream();
                stream.Write(data, 0, data.Length);
                stream.Close();

       }

Also tried putting in the file location as a string with @"C... I receive no errors, and no file shows up after the upload

Did you check the user permission on server.. can user write to directory?

if you use linux server this will help you to fix file path issue.

     private static void UploadFile(string dir, Uri target, string fileName, string username, string password, string finilizingDir, string startupPath, string logFileDirectoryName)
            {
                try
                {
                    // Get the object used to communicate with the server.
                    FtpWebRequest request = (FtpWebRequest)WebRequest.Create(target);
                    request.Proxy = null;
                    request.Method = WebRequestMethods.Ftp.UploadFile;

                    // logon.
                    request.Credentials = new NetworkCredential(username, password);

                    // Copy the contents of the file to the request stream.
                    StreamReader sourceStream = new StreamReader(dir + "\\" + fileName);
                    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();

                    if (response.StatusCode == FtpStatusCode.ClosingData)
                    {
                       Console.WriteLine(" --> Status Code is :" + response.StatusCode);
                    }

                     Console.WriteLine(" --> Upload File Complete With Status Description :" + response.StatusDescription);

                    response.Close();
                }
                catch (Exception ex)
                {
                     Console.WriteLine("*** Error Occurred while uploading file :" + fileName + " System Says :" + ex.Message + " **********END OF ERROR**********");
                }
            }

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM