在好例子网,分享、交流、成长!
您当前所在位置:首页C# 开发实例C#文件解析和处理 → C#通过ftp上传文件至远程服务器

C#通过ftp上传文件至远程服务器

C#文件解析和处理

下载此实例
  • 开发语言:C#
  • 实例大小:0.18M
  • 下载次数:79
  • 浏览次数:1131
  • 发布时间:2020-03-31
  • 实例类别:C#文件解析和处理
  • 发 布 人:1266774
  • 文件格式:.rar
  • 所需积分:10
 相关标签: 文件上传 FTP TP 文件 上传

实例介绍

【实例简介】

文件上传到pdf

【实例截图】VS2017开发

from clipboard

【核心代码】

from clipboard配置文件


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();

        }
    }
}



实例下载地址

C#通过ftp上传文件至远程服务器

不能下载?内容有错? 点击这里报错 + 投诉 + 提问

好例子网口号:伸出你的我的手 — 分享

网友评论

发表评论

(您的评论需要经过审核才能显示)

查看所有0条评论>>

小贴士

感谢您为本站写下的评论,您的评论对其它用户来说具有重要的参考价值,所以请认真填写。

  • 类似“顶”、“沙发”之类没有营养的文字,对勤劳贡献的楼主来说是令人沮丧的反馈信息。
  • 相信您也不想看到一排文字/表情墙,所以请不要反馈意义不大的重复字符,也请尽量不要纯表情的回复。
  • 提问之前请再仔细看一遍楼主的说明,或许是您遗漏了。
  • 请勿到处挖坑绊人、招贴广告。既占空间让人厌烦,又没人会搭理,于人于己都无利。

关于好例子网

本站旨在为广大IT学习爱好者提供一个非营利性互相学习交流分享平台。本站所有资源都可以被免费获取学习研究。本站资源来自网友分享,对搜索内容的合法性不具有预见性、识别性、控制性,仅供学习研究,请务必在下载后24小时内给予删除,不得用于其他任何用途,否则后果自负。基于互联网的特殊性,平台无法对用户传输的作品、信息、内容的权属或合法性、安全性、合规性、真实性、科学性、完整权、有效性等进行实质审查;无论平台是否已进行审查,用户均应自行承担因其传输的作品、信息、内容而可能或已经产生的侵权或权属纠纷等法律责任。本站所有资源不代表本站的观点或立场,基于网友分享,根据中国法律《信息网络传播权保护条例》第二十二与二十三条之规定,若资源存在侵权或相关问题请联系本站客服人员,点此联系我们。关于更多版权及免责申明参见 版权及免责申明

;
报警