/// <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);
}
}
}
}
}
}