基本信息
源码名称:C#通过ftp上传文件至远程服务器
源码大小:0.18M
文件格式:.rar
开发语言:C#
更新时间:2020-03-31
   友情提示:(无需注册或充值,赞助后即可获取资源下载链接)

     嘿,亲!知识可是无价之宝呢,但咱这精心整理的资料也耗费了不少心血呀。小小地破费一下,绝对物超所值哦!如有下载和支付问题,请联系我们QQ(微信同号):813200300

本次赞助数额为: 10 元 
   源码介绍

文件上传到pdf

VS2017开发

配置文件


using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Net;
using System.IO;
using System.Configuration;

namespace ftpupload
{
    public class FTPUpload
    {
        static FtpWebRequest reqFTP;

        static WebResponse response;

        static StreamReader ftpStream;

        static Stream strm;

        static FileStream fs;

        //const string temp = "temp";

        static string filenametemp = "";

        static string ftpServerIP = ConfigurationManager.AppSettings["ftpIP"];

        static string ftpUserID = ConfigurationManager.AppSettings["ftpuid"];

        static string ftpPassword = ConfigurationManager.AppSettings["ftppass"];

        /// <summary>

        /// 上传

        /// </summary>

        /// <param name="path">绝对路径</param>

        /// <param name="filename">经销商文件夹名称</param>

        /// <returns></returns>

        public static bool Upload(string path, string filename)

        {

            bool bol = false;

            string ftppath = @"ftp://" ftpServerIP;

            //fileRename(ftppath, "Test1", temp);

            if (CheckFTPFile(filename, ftppath))

            {

                if (StatusUpLoad("", filename, path, ftppath))

                {

                    bol = true;

                }

            }

            else

            {

                if (CreateFile(ftppath "/" filename))
                {
                    if (StatusUpLoad("", filename, path, ftppath))
                    {
                        bol = true;
                    }
                }
            }

            return bol;

        }

        /// <summary>

        /// 上传到ftp

        /// </summary>

        /// <param name="filename"></param>

        /// <param name="filename"></param>

        /// <param name="path"></param>

        /// <param name="ftppath"></param>

        /// <param name="ftpUserID"></param>

        /// <param name="ftpPassword"></param>

        /// <returns></returns>

        private static bool StatusUpLoad(string AdorAt, string filename, string path, string ftppath)
        {
            bool bol = false;

            string url = "";

            string _newpath = "";

            FileInfo fileInf = new FileInfo(path);


            //_newpath = CheckFTPFileChildren(ftppath "/" filename);
            _newpath =ftppath "/" filename;

            if (_newpath != "")

            {

                url = _newpath "/" fileInf.Name;

            }

            else

            {

                new Exception();

            }

            reqFTP = (FtpWebRequest)FtpWebRequest.Create(new Uri(url));

            reqFTP.Credentials = new NetworkCredential(ftpUserID, ftpPassword);

            reqFTP.KeepAlive = false;

            reqFTP.Method = WebRequestMethods.Ftp.UploadFile;

            reqFTP.UseBinary = true;

            reqFTP.ContentLength = fileInf.Length;

            int buffLength = 2048;

            byte[] buff = new byte[buffLength];

            int contentLen;

            fs = fileInf.OpenRead();

            try

            {

                strm = reqFTP.GetRequestStream();

                contentLen = fs.Read(buff, 0, buffLength);

                while (contentLen != 0)

                {

                    strm.Write(buff, 0, contentLen);

                    contentLen = fs.Read(buff, 0, buffLength);

                }

                strm.Close();

                fs.Close();

                bol = true;

            }

            catch (Exception ex)

            {

                bol = false;

            }

            return bol;

        }



        /// <summary>

        /// 判断一级文件夹是否存在

        /// </summary>

        /// <param name="fileName">要判断的文件名</param>

        /// <param name="strFTPPath">ftp路径</param>

        /// <param name="ftpUserID"></param>

        /// <param name="ftpPassword"></param>

        /// <returns></returns>

        public static bool CheckFTPFile(string fileName, string strFTPPath)

        {

            reqFTP = (FtpWebRequest)FtpWebRequest.Create(new Uri(strFTPPath));

            reqFTP.Method = WebRequestMethods.Ftp.ListDirectoryDetails;

            reqFTP.UseBinary = true;

            reqFTP.Credentials = new NetworkCredential(ftpUserID, ftpPassword);

            response = (FtpWebResponse)reqFTP.GetResponse();

            ftpStream = new StreamReader(response.GetResponseStream(), System.Text.Encoding.Default);

            List<string> files = new List<string>();

            string line = ftpStream.ReadLine();

            while (line != null)

            {

                if (line.Contains("<DIR>"))

                {

                    files.Add(line);

                }

                line = ftpStream.ReadLine();

            }

            response.Close();

            ftpStream.Close();

            bool fag = false;

            for (int i = 0; i < files.Count; i )

            {

                string[] strfiles = files[i].Split(' ');

                string file = strfiles[strfiles.Length - 1];

                if (file == fileName)

                {

                    fag = true;

                    break;

                }

            }

            return fag;

        }



        /// <summary>

        /// 判断文件是否存在

        /// </summary>

        /// <param name="fileName">文件</param>

        /// <param name="strFTPPath">路径</param>

        /// <param name="ftpUserID"></param>

        /// <param name="ftpPassword"></param>

        /// <returns></returns>

        public static string CheckFTPFileChildren(string strFTPPath)

        {

            int number;

            string urlpath = "";

            reqFTP = (FtpWebRequest)FtpWebRequest.Create(new Uri(strFTPPath));

            reqFTP.Method = WebRequestMethods.Ftp.ListDirectoryDetails;

            reqFTP.UseBinary = true;

            reqFTP.Credentials = new NetworkCredential(ftpUserID, ftpPassword);

            try

            {

                response = (FtpWebResponse)reqFTP.GetResponse();

                ftpStream = new StreamReader(response.GetResponseStream(), System.Text.Encoding.Default);

                List<string> files = new List<string>();

                string line = ftpStream.ReadLine();

                while (line != null)

                {

                    if (line.Contains("<DIR>"))

                    {

                        files.Add(line);

                    }

                    line = ftpStream.ReadLine();

                }

                response.Close();

                ftpStream.Close();

                bool fag = false;

                int count = files.Count;

                for (int i = 0; i < files.Count; i )

                {

                    string[] strfiles = files[i].Split(' ');

                    string file = strfiles[strfiles.Length - 1];

                    if (file != "Advert" && file != "Attachments")

                    {

                        number = CheckFileNumber(strFTPPath "/" file);

                        if (number < 20)

                        {

                            urlpath = strFTPPath "/" file;

                            fag = true;

                            break;

                        }

                    }

                }

                if (!fag)

                {

                    while (true)

                    {

                        urlpath = strFTPPath "/" (count - 1);

                        if (CreateFile(urlpath))

                        {

                            filenametemp = (count - 1).ToString();

                            break;

                        }

                        count ;

                    }

                }

            }

            catch

            {

                urlpath = "";

            }

            return urlpath;

        }

        /// <summary>

        /// 判断数量

        /// </summary>

        /// <param name="strFTPPath"></param>

        /// <param name="ftpUserID"></param>

        /// <param name="ftpPassword"></param>

        /// <returns></returns>

        public static int CheckFileNumber(string strFTPPath)

        {

            reqFTP = (FtpWebRequest)FtpWebRequest.Create(new Uri(strFTPPath));

            reqFTP.Method = WebRequestMethods.Ftp.ListDirectoryDetails;

            reqFTP.UseBinary = true;

            reqFTP.Credentials = new NetworkCredential(ftpUserID, ftpPassword);

            response = (FtpWebResponse)reqFTP.GetResponse();

            ftpStream = new StreamReader(response.GetResponseStream(), System.Text.Encoding.Default);

            List<string> files = new List<string>();

            string line = ftpStream.ReadLine();

            while (line != null)

            {

                if (!line.Contains("<DIR>"))

                {

                    files.Add(line);

                }

                line = ftpStream.ReadLine();

            }

            response.Close();

            ftpStream.Close();

            return files.Count;

        }

        /// <summary>

        /// 创建文件夹

        /// </summary>

        /// <param name="dirName"></param>

        public static bool CreateFile(string strFTPPath)

        {

            try

            {

                reqFTP = (FtpWebRequest)FtpWebRequest.Create(new Uri(strFTPPath));

                reqFTP.Method = WebRequestMethods.Ftp.MakeDirectory;

                reqFTP.UseBinary = true;

                reqFTP.Credentials = new NetworkCredential(ftpUserID, ftpPassword);

                response = (FtpWebResponse)reqFTP.GetResponse();

                strm = response.GetResponseStream();

                strm.Close();

                response.Close();

                return true;

            }

            catch (Exception ex)

            {

                return false;

            }

        }



        /// <summary>

        /// 删除文件

        /// </summary> ftppath=ftppath "//Test\\6ec5069d-7f17-4ce4-852b-0e1d996aca2f.jpg";

        /// <param name="fileName"></param>

        public static bool DeleteFile(string path)

        {

            try

            {

                reqFTP = (FtpWebRequest)FtpWebRequest.Create(new Uri(path));

                reqFTP.Credentials = new NetworkCredential(ftpUserID, ftpUserID);

                reqFTP.KeepAlive = false;

                reqFTP.Method = WebRequestMethods.Ftp.DeleteFile;

                string result = String.Empty;

                response = (FtpWebResponse)reqFTP.GetResponse();

                long size = response.ContentLength;

                strm = response.GetResponseStream();

                ftpStream = new StreamReader(strm);

                result = ftpStream.ReadToEnd();

                strm.Close();

                ftpStream.Close();

                response.Close();

                return true;

            }

            catch (Exception ex)

            {

                return false;

            }

        }



        public static void fileRename(string ftpPath, string oldFileName, string newFileName)

        {

            reqFTP = (FtpWebRequest)FtpWebRequest.Create(new Uri(ftpPath "/" oldFileName));

            reqFTP.Method = WebRequestMethods.Ftp.Rename;

            reqFTP.UseBinary = true;

            reqFTP.RenameTo = newFileName;

            reqFTP.Credentials = new NetworkCredential(ftpUserID, ftpPassword);

            response = (FtpWebResponse)reqFTP.GetResponse();

            strm = response.GetResponseStream();

            response.Close();

            strm.Close();

        }
    }
}