using System;
using System.Collections.Generic;
using System.Net;
using System.IO;
using System.Threading;
namespace Common
{
public class FtpAux2
{
private string strFilePath = System.Environment.CurrentDirectory;//路径
private string _remote_path = "";
//private string FtpIP = "192.1.3.240";//192.1.3.240
public string IP { get; set; }
public string RemotePath
{
get { return _remote_path; }
set
{
_remote_path = value;
if (!_remote_path.EndsWith("/")) _remote_path += "/";
}
}
public string UserName { get; set; }
public string Password { get; set; }
public string LocalPath { get; set; }
public bool Passive { get; set; }
public bool Binary { get; set; }
public FtpAux2()
{
IP = AppConfigCache.ftpIp;
Passive = true;
_remote_path = "";
LocalPath = "c:/";
UserName = AppConfigCache.ftpUid;
Password = AppConfigCache.ftpPwd;
Binary = true;
}
public void DownLoadFile(string filename)
{
Uri uri = new Uri("ftp://" + IP + RemotePath + filename);
FtpWebRequest req = (FtpWebRequest)WebRequest.Create(uri);
req.Method = WebRequestMethods.Ftp.DownloadFile;
req.UseBinary = Binary;
req.UsePassive = Passive;
req.Credentials = new NetworkCredential(UserName, Password);
using (FtpWebResponse res = (FtpWebResponse)req.GetResponse())
{
string localfile = Path.Combine(LocalPath, filename);
FileStream fs = new FileStream(localfile, FileMode.Create, FileAccess.Write);
int buffer = 1024; //1K缓冲
byte[] b = new byte[buffer];
int i = 0;
Stream stream = res.GetResponseStream();
while ((i = stream.Read(b, 0, buffer)) > 0)
{
fs.Write(b, 0, i);
}
fs.Flush();
fs.Close();
}
}
///
/// 创建一个目录
///
public void CreateDirectory()
{
try
{
FileInfo fi = new FileInfo(RemotePath);
Uri uri = new Uri("ftp://" + IP + RemotePath);
List list = new List();
FtpWebRequest req = (FtpWebRequest)WebRequest.Create(uri); //
req.Credentials = new NetworkCredential(UserName, Password);
req.Method = WebRequestMethods.Ftp.MakeDirectory;
req.UseBinary = Binary;
FtpWebResponse res = (FtpWebResponse)req.GetResponse();
GetFileList();
}
catch (Exception exp)
{
}
}
///
/// 获取FTP文件列表 /jldata/ftppicture/
///
///
public List GetFileList()
{
List list = new List();
try
{
FtpWebRequest req = (FtpWebRequest)WebRequest.Create(new Uri("ftp://" + IP + RemotePath)); //
req.Credentials = new NetworkCredential(UserName, Password);
req.Method = WebRequestMethods.Ftp.ListDirectory;
req.UseBinary = Binary;
req.UsePassive = Passive;
using (FtpWebResponse res = (FtpWebResponse)req.GetResponse())
{
using (StreamReader sr = new StreamReader(res.GetResponseStream()))
{
string s;
while ((s = sr.ReadLine()) != null)
{
list.Add(s);
}
}
}
return list;
}
catch (Exception exp)
{
CreateDirectory();
return list;
}
}
public void UploadFile(string localFile)
{
FileInfo fi = new FileInfo(localFile);
FileStream fs = fi.OpenRead();
long length = fs.Length;
FtpWebRequest req = (FtpWebRequest)WebRequest.Create("ftp://" + IP + RemotePath + fi.Name);
req.Credentials = new NetworkCredential(UserName, Password);
req.Method = WebRequestMethods.Ftp.UploadFile;
req.UseBinary = Binary;
req.ContentLength = length;
req.Timeout = 10 * 1000;
Stream stream = req.GetRequestStream();
int BufferLength = 2048; //2K
byte[] b = new byte[BufferLength];
int i;
while ((i = fs.Read(b, 0, BufferLength)) > 0)
{
stream.Write(b, 0, i);
}
stream.Close();
stream.Dispose();
fs.Close();
}
public void UploadFile(string fileName, byte[] data)
{
long length = data.Length;
FtpWebRequest req = (FtpWebRequest)WebRequest.Create("ftp://" + IP + RemotePath + fileName);
req.Credentials = new NetworkCredential(UserName, Password);
req.Method = WebRequestMethods.Ftp.UploadFile;
req.UseBinary = Binary;
req.ContentLength = length;
req.Timeout = 10 * 1000;
Stream stream = req.GetRequestStream();
stream.Write(data, 0, data.Length);
stream.Close();
stream.Dispose();
}
///
/// FTP图片上传
///
///
///
public bool FtpUp(string strPath, string strWgtNo)
{
try
{
Thread.Sleep(500);
LocalPath = "d:/";
UserName = "ftpuser";
Password = "admin_2019";//ftpuser admin_2019
//ftp.RemotePath = "//home/xgkftp/image/" + DateTime.Now.ToString("yyyy-MM-dd");///home/xgkftp/image/
RemotePath = "//Image/mcms/testCAR/" + DateTime.Now.ToString("yyyy-MM-dd");//RemotePath
GetFileList();
string[] arrayFileImage = new string[6];
for (int i = 1; i < 8; i++)
{
string strPathImage = strPath + "_" + i.ToString() + ".jpg";
if (File.Exists(strPathImage))
{//存在的图片进行上传操作
UploadFile(strPathImage);
WriteLog("图片上传后,进行删除操作,图片路径:" + strPathImage);
File.Delete(strPathImage);
}
//else
//{//未截图成功的,也上传一个图片
// File.Copy(strFilePath + "\\image\\null.jpg", strPathImage);
// UploadFile(strPathImage);
//}
arrayFileImage[i - 1] = RemotePath + strWgtNo + "_" + i.ToString() + ".jpg";
}
return true;
}
catch (Exception exp)
{
WriteLog("FTP图片上传失败!" + strPath + exp.Message + exp.StackTrace);
return false;
}
}
private void WriteLog(string str)
{
if (System.IO.Directory.Exists(strFilePath + "\\log") == false)
{
System.IO.Directory.CreateDirectory(strFilePath + "\\log");
}
string strDate = System.DateTime.Now.ToString("yyyyMMdd");
System.IO.TextWriter tw = new System.IO.StreamWriter(strFilePath + "\\log\\" + "FTP_" + strDate + ".log", true);
tw.WriteLine(System.DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"));
tw.WriteLine(str);
tw.WriteLine("\r\n");
tw.Close();
}
}
}