服务器下载Server-U 创建用户。如果要在服务器创建目录 则要设置权限。Server-U里面配置权限以及路径
上传方法
//上传服务器
public string strFtpPath = "FTP://192.168.1.190"; //ftp地址
//string strFtpPath = "FTP://192.168.52.215"; //ftp本地地址
public string strUserName = "test"; //用户名
public string strPassword = "test"; //密码
/// <summary>
/// 上传服务器
/// </summary>
/// <param name="fileinfo">上传文件</param>
/// <param name="strFolder">服务器创建文件夹的命名</param>
/// <param name="PostFileName">上传文件命名</param>
/// <returns></returns>
public Boolean UploadFile(System.IO.FileInfo fileinfo, string strFolder, string PostFileName)
{
string URI = strFtpPath + "/" + strFolder; //上传服务器的目录
//获取ftp对象
System.Net.FtpWebRequest ftp = GetRequest(URI);
if (!RemoteFtpDirExists(strFolder)) //目录是否存在 不存在 则创建
{
//在ftp服务器上创建文件目录
ftp.UseBinary = true;
// reqFtp.KeepAlive = false;
//设置ftp方法为创建目录协议
ftp.Method = WebRequestMethods.Ftp.MakeDirectory;
ftp.Credentials = new NetworkCredential(strUserName, strPassword);
FtpWebResponse response = (FtpWebResponse)ftp.GetResponse();
response.Close();
}
//写入
System.Net.FtpWebRequest writeftp = GetRequest(URI + "/" + PostFileName);
//设置ftp方法为上传协议
writeftp.Method = System.Net.WebRequestMethods.Ftp.UploadFile;
//制定文件传输的数据类型
writeftp.UseBinary = true;
writeftp.UsePassive = true;
//文件大小
writeftp.ContentLength = fileinfo.Length;
//缓冲大小设置为20kb
const int BufferSize = 20480;
byte[] content = new byte[BufferSize - 1 + 1];
int dataRead;
//打开一个文件流(System.IO.FileStream)去读上传的文件
using (System.IO.FileStream fs = fileinfo.OpenRead())
{
try
{
//把上传的文件写入流
using (System.IO.Stream rs = writeftp.GetRequestStream())
{
do
{
//每次读文件流的2KB
dataRead = fs.Read(content, 0, BufferSize);
rs.Write(content, 0, dataRead);
} while (!(dataRead < BufferSize));
rs.Close();
return true;
}
}
catch (Exception ex)
{
writeftp = null;
writeftp = GetRequest(URI);
writeftp.Method = System.Net.WebRequestMethods.Ftp.DeleteFile;//删除
writeftp.GetResponse();
return false;
}
finally
{
fs.Close();
}
}
}
/// <summary>
/// 判断ftp上的文件目录是否存在
/// </summary>
/// <param name="path"></param>
/// <returns></returns>
public bool RemoteFtpDirExists(string path)
{
path = strFtpPath + "/" + path;
FtpWebRequest reqFtp = (FtpWebRequest)FtpWebRequest.Create(new Uri(path));
reqFtp.UseBinary = true;
reqFtp.Credentials = new NetworkCredential(strUserName, strPassword);
reqFtp.Method = WebRequestMethods.Ftp.ListDirectory;
FtpWebResponse resFtp = null;
try
{
resFtp = (FtpWebResponse)reqFtp.GetResponse();
FtpStatusCode code = resFtp.StatusCode;//OpeningData
resFtp.Close();
return true;
}
catch
{
if (resFtp != null)
{
resFtp.Close();
}
return false;
}
}
/// <summary>
/// 得到ftp对象
/// </summary>
/// <param name="URI">ftp地址</param>
/// <param name="username">ftp用户名</param>
/// <param name="password">ftp密码</param>
/// <returns>返回ftp对象</returns>
private System.Net.FtpWebRequest GetRequest(string URI)
{
//根据服务器信息FtpWebRequest创建类的对象
FtpWebRequest result = (FtpWebRequest)FtpWebRequest.Create(URI);
//提供身份验证信息
result.Credentials = new System.Net.NetworkCredential(strUserName, strPassword);
//result.Credentials = new System.Net.NetworkCredential();
//设置请求完成之后是否保持到FTP服务器的控制连接,默认值为true
result.KeepAlive = false;
return result;
}
/// <summary>
/// 本地备份(成功/失败) type=1表示成功
/// </summary>
/// <param name="type"></param>
/// <param name="fileinfo"></param>
public void FiltResultBackup(string type, System.IO.FileInfo fileinfo, string strDate, string ReasonName)
{
string strFileName = fileinfo.Name; //获取文件的文件名
string relst = "失败";
if (type == "Success")
{
relst = "成功";
}
//判断文件是否存在,不存在则创建路径
if (!System.IO.Directory.Exists(filePath + "\\" + relst + "文件" + strDate))
{
System.IO.Directory.CreateDirectory(filePath + "\\" + relst + "文件" + strDate);
}
File.Copy(fileinfo.FullName, filePath + "\\" + relst + "文件" + strDate + "\\" + strFileName, true);//复制图片
}