.net 使用FtpClient进行附件的上传

     /// <summary>
        /// FTP附件上传
        /// </summary>
        /// <param name="listzp"></param>
        public void FTPUpload(List<T_MED_DUOMEITI> listzp)
        {
            string baseDirectory = System.Configuration.ConfigurationManager.AppSettings["FileUrl"];//本地附件的根目录后面做拼接用,比如E:\文件夹\文件夹  
            string strServer = System.Configuration.ConfigurationManager.AppSettings["FTP_IP"];//FTP的IP地址
            string port = System.Configuration.ConfigurationManager.AppSettings["FTP_Port"];//FTP的端口号
            string strUser = System.Configuration.ConfigurationManager.AppSettings["FTP_UserName"];//FTP的登录名
            string strPassword = System.Configuration.ConfigurationManager.AppSettings["FTP_Password"];//FTP的密码
            //连接FTP
            //Log.SaveNote("FileUrl:" + baseDirectory + "strServer:" + strServer + "port:" + port + "strUser:" + strUser + "strPassword:" + strPassword);
            FtpClient ftp = new FtpClient();

            ftp.Host = strServer;
            ftp.Port = Convert.ToInt32(port);
            ftp.Credentials = new NetworkCredential(strUser, strPassword);
            ftp.Connect();


            //Log.SaveNote("FTP连接成功");
            //循环所有附件
            foreach (var item in listzp)
            {
          //如果FTP处于关闭状态就重新打开
if (!ftp.IsConnected) { ftp.Host = strServer; ftp.Port = Convert.ToInt32(port); ftp.Credentials = new NetworkCredential(strUser, strPassword); ftp.Connect(); } //判断有无具体附件 var fileFullUrl = baseDirectory + item.PATH;//如E:\文件夹\文件夹\123.jpg //Log.SaveNote("fileFullUrl:" + fileFullUrl); //有物理照片的情况下才进行传输 if (File.Exists(fileFullUrl)) {
            //item.PATH是数据库存储的路径,做截取是为了取前面的路径,如 /文件夹/456.jpg
string Savepath = item.PATH.Substring(0, item.PATH.LastIndexOf(@"\"));
            //item.MINGCHENG就是本地附件的物理名称,如123.jpg
            string file = item.MINGCHENG;             //判断FTP上有无该路径,没有路径就创建 if (!ftp.DirectoryExists(Savepath)) { ftp.CreateDirectory(Savepath); } //文件不存在的时候才传输
            
            //数据库中存的是反斜杠,所以这里需要转换下 var exitFile = item.PATH.Replace(@"\", "/"); if (!ftp.FileExists(exitFile)) { Log.SaveNote("开始传输文件:" + fileFullUrl); using (var fileStream = File.OpenRead(fileFullUrl)) using (var ftpStream = ftp.OpenWrite(item.PATH)) { var buffer = new byte[8 * 1024]; int uu; while ((uu = fileStream.Read(buffer, 0, buffer.Length)) > 0) { ftpStream.Write(buffer, 0, uu); } } } } } }

 

posted @ 2022-05-06 16:38  桎梏110  阅读(322)  评论(0编辑  收藏  举报
Live2D