這期內(nèi)容當中小編將會給大家?guī)碛嘘P(guān)FTP的文件如何管理,文章內(nèi)容豐富且以專業(yè)的角度為大家分析和敘述,閱讀完這篇文章希望大家可以有所收獲。

和安裝iis一樣。全部勾選。

設(shè)置站點名稱和路徑。

設(shè)置ip。

身份授權(quán)選擇所有用戶,可以讀寫。

完成之后 IIS就會出現(xiàn):

計算機-->管理-->本地用戶和組。 添加用戶,描述為FTP。

這里要設(shè)置用戶的密碼方式,去掉“用戶下次登錄時必須更改密碼”的選項。

不然會登錄不成功。報530錯誤。
ftp ip 就可以訪問。顯示230 user logged in 表示登錄成功。

FtpHelper:
public static class FtpHelper
{ //基本設(shè)置
private const string Path = @"ftp://192.168.253.4:21/"; //目標路徑
private const string Ftpip = "192.168.253.4"; // GetAppConfig("obj"); //ftp IP地址
private const string Username = "stone"; //GetAppConfig("username"); //ftp用戶名
private const string Password = "111111"; //GetAppConfig("password"); //ftp密碼 // 2M 可能不夠
private const int bufferSize = 2048; /// <summary>
/// 獲取自定義配置的值 /// </summary>
/// <param name="strKey">鍵值</param>
/// <returns>鍵值對應的值</returns>
public static string GetAppConfig(string strKey)
{ foreach (string key in ConfigurationManager.AppSettings)
{ if (key == strKey)
{ return ConfigurationManager.AppSettings[strKey];
}
} return null;
} //獲取ftp上面的文件和文件夾
public static string[] GetFileList(string dir)
{ var result = new StringBuilder(); try
{ var ftpRequest = FtpRequest(Path, WebRequestMethods.Ftp.ListDirectory);
webResponse response = ftpRequest.GetResponse(); var reader = new StreamReader(response.GetResponseStream()); string line = reader.ReadLine(); while (line != null)
{
result.Append(line);
result.Append("\n");
Console.WriteLine(line);
line = reader.ReadLine();
} // to remove the trailing '\n'
result.Remove(result.ToString().LastIndexOf('\n'), 1);
reader.Close();
response.Close(); return result.ToString().Split('\n');
} catch (Exception ex)
{
Console.WriteLine("獲取ftp上面的文件和文件夾:" + ex.Message); return new[] {""};
}
} /// <summary>
/// 獲取文件大小 /// </summary>
/// <param name="file">ip服務(wù)器下的相對路徑</param>
/// <returns>文件大小</returns>
public static int GetFileSize(string file)
{ var result = new StringBuilder();
FtpWebRequest request; try
{
request = (FtpWebRequest) WebRequest.Create(new Uri(Path + file));
request.UseBinary = true;
request.Credentials = new NetworkCredential(Username, Password); //設(shè)置用戶名和密碼
request.Method = WebRequestMethods.Ftp.GetFileSize; var dataLength = (int) request.GetResponse().ContentLength; return dataLength;
} catch (Exception ex)
{
Console.WriteLine("獲取文件大小出錯:" + ex.Message); return -1;
}
} /// <summary>
/// 文件上傳 /// </summary>
/// <param name="localFile">原路徑(絕對路徑)包括文件名</param>
/// <param name="remoteFile">目標文件夾:服務(wù)器下的相對路徑 不填為根目錄</param>
public static bool UpLoad(string localFile, string remoteFile = "")
{ try
{ string url = Path; if (remoteFile != "")
url += remoteFile + "/"; try
{ //待上傳的文件 (全路徑)
try
{ var fileInfo = new FileInfo(localFile); using (FileStream fs = fileInfo.OpenRead())
{ long length = fs.Length;
FtpWebRequest reqFtp = FtpRequest(url + fileInfo.Name,WebRequestMethods.Ftp.UploadFile); using (Stream stream = reqFtp.GetRequestStream())
{ //設(shè)置緩沖大小
int BufferLength = 5120; var b = new byte[BufferLength]; int i; while ((i = fs.Read(b, 0, BufferLength)) > 0)
{
stream.Write(b, 0, i);
}
Console.WriteLine("上傳文件成功"); return true;
}
}
} catch (Exception ex)
{
Console.WriteLine("上傳文件失敗錯誤為" + ex.Message);
} finally
{
}
} catch (Exception ex)
{
Console.WriteLine("上傳文件失敗錯誤為" + ex.Message);
} finally
{
}
} catch (Exception ex)
{
Console.WriteLine("上傳文件失敗錯誤為" + ex.Message);
} return false;
} public static bool UpLoad(Stream localFileStream, string remoteFile)
{ bool result = true; try
{ var ftpRequest = FtpRequest(Path + remoteFile, WebRequestMethods.Ftp.UploadFile); var ftpStream = ftpRequest.GetRequestStream(); var byteBuffer = new byte[bufferSize]; int bytesSent = localFileStream.Read(byteBuffer, 0, bufferSize); try
{ while (bytesSent != 0)
{
ftpStream.Write(byteBuffer, 0, bytesSent);
bytesSent = localFileStream.Read(byteBuffer, 0, bufferSize);
}
} catch (Exception ex)
{
Console.WriteLine(ex.ToString());
result = false;
}
localFileStream.Close();
ftpStream.Close();
} catch (Exception ex)
{
Console.WriteLine(ex.ToString());
result = false;
} return result;
} public static FtpWebRequest FtpRequest(string requstUrl,string method,bool closedResponse=false)
{ var reqFtp = (FtpWebRequest) WebRequest.Create(new Uri(requstUrl)); //設(shè)置連接到FTP的帳號密碼
reqFtp.Credentials = new NetworkCredential(Username, Password); //設(shè)置請求完成后是否保持連接
reqFtp.KeepAlive = false; //指定執(zhí)行命令
reqFtp.Method = method; //指定數(shù)據(jù)傳輸類型
reqFtp.UseBinary = true; if (closedResponse)
{ var resp=reqFtp.GetResponse();
resp.Close();
} return reqFtp;
} /// <summary>
/// 下載 /// </summary>
/// <param name="localFile">目的位置</param>
/// <param name="remoteFile">服務(wù)器相對位置</param>
/// <returns></returns>
public static bool Download(string localFile,string remoteFile)
{ bool check = true; try
{ var outputStream = new FileStream(localFile, FileMode.Create); var ftpRequest = FtpRequest(Path + remoteFile, WebRequestMethods.Ftp.DownloadFile); var response = (FtpWebResponse)ftpRequest.GetResponse();
Stream ftpStream = response.GetResponseStream(); long cl = response.ContentLength; int bufferSize = 2048; int readCount; var buffer = new byte[bufferSize];
readCount = ftpStream.Read(buffer, 0, bufferSize); while (readCount > 0)
{
outputStream.Write(buffer, 0, readCount);
readCount = ftpStream.Read(buffer, 0, bufferSize);
}
ftpStream.Close();
outputStream.Close();
response.Close();
} catch (Exception err)
{
check = false;
} return check;
} public static Stream Download(string remoteFile)
{ var ftpRequest = FtpRequest(Path + remoteFile, WebRequestMethods.Ftp.DownloadFile); var response = (FtpWebResponse)ftpRequest.GetResponse();
Stream ftpStream = response.GetResponseStream(); return ftpStream;
} /// <summary>
/// 刪除文件 /// </summary>
/// <param name="fileName">服務(wù)器下的相對路徑 包括文件名</param>
public static void DeleteFileName(string fileName)
{ try
{
FtpRequest(Path + fileName, WebRequestMethods.Ftp.DeleteFile,true);
} catch (Exception ex)
{
Console.WriteLine("刪除文件出錯:" + ex.Message);
}
} /// <summary>
/// 新建目錄 上一級必須先存在 /// </summary>
/// <param name="dirName">服務(wù)器下的相對路徑</param>
public static void MakeDir(string dirName)
{ try
{
FtpRequest(Path + dirName, WebRequestMethods.Ftp.MakeDirectory, true);
} catch (Exception ex)
{
Console.WriteLine("創(chuàng)建目錄出錯:" + ex.Message);
}
} /// <summary>
/// 刪除目錄 上一級必須先存在 /// </summary>
/// <param name="dirName">服務(wù)器下的相對路徑</param>
public static void DelDir(string dirName)
{ try
{
FtpRequest(Path + dirName, WebRequestMethods.Ftp.RemoveDirectory,true);
} catch (Exception ex)
{
Console.WriteLine("刪除目錄出錯:" + ex.Message);
}
} /// <summary>
/// 從ftp服務(wù)器上獲得文件夾列表 /// </summary>
/// <param name="requedstPath">服務(wù)器下的相對路徑</param>
/// <returns></returns>
public static List<string> GetDirctory(string requedstPath)
{ var strs = new List<string>(); try
{ var reqFtp = FtpRequest(Path + requedstPath, WebRequestMethods.Ftp.ListDirectoryDetails);
webResponse response = reqFtp.GetResponse(); var reader = new StreamReader(response.GetResponseStream()); //中文文件名
string line = reader.ReadLine(); while (line != null)
{ if (line.Contains("<DIR>"))
{ string msg = line.Substring(line.LastIndexOf("<DIR>") + 5).Trim();
strs.Add(msg);
}
line = reader.ReadLine();
}
reader.Close();
response.Close(); return strs;
} catch (Exception ex)
{
Console.WriteLine("獲取目錄出錯:" + ex.Message);
} return strs;
} /// <summary>
/// 從ftp服務(wù)器上獲得文件列表 /// </summary>
/// <param name="requedstPath">服務(wù)器下的相對路徑</param>
/// <returns></returns>
public static List<string> GetFile(string requedstPath)
{ var strs = new List<string>(); try
{ var reqFtp = FtpRequest(Path + requedstPath, WebRequestMethods.Ftp.ListDirectoryDetails);
webResponse response = reqFtp.GetResponse(); var reader = new StreamReader(response.GetResponseStream()); //中文文件名
string line = reader.ReadLine(); while (line != null)
{ if (!line.Contains("<DIR>"))
{ string msg = line.Substring(39).Trim();
strs.Add(msg);
}
line = reader.ReadLine();
}
reader.Close();
response.Close(); return strs;
} catch (Exception ex)
{
Console.WriteLine("獲取文件出錯:" + ex.Message);
} return strs;
}
}View Code
主要是通過創(chuàng)建FtpRequest來處理Ftp相關(guān)請求。
public static FtpWebRequest FtpRequest(string requstUrl,string method,bool closedResponse=false)
{ var reqFtp = (FtpWebRequest) WebRequest.Create(new Uri(requstUrl)); //設(shè)置連接到FTP的帳號密碼
reqFtp.Credentials = new NetworkCredential(Username, Password); //設(shè)置請求完成后是否保持連接
reqFtp.KeepAlive = false; //指定執(zhí)行命令
reqFtp.Method = method; //指定數(shù)據(jù)傳輸類型
reqFtp.UseBinary = true; if (closedResponse)
{ var resp=reqFtp.GetResponse();
resp.Close();
} return reqFtp;
}因為在MVC網(wǎng)站中使用的文件流的方式。
下載:
public static Stream Download(string remoteFile)
{ var ftpRequest = FtpRequest(Path + remoteFile, WebRequestMethods.Ftp.DownloadFile); var response = (FtpWebResponse)ftpRequest.GetResponse();
Stream ftpStream = response.GetResponseStream(); return ftpStream;
}調(diào)用:
public ActionResult DownloadFileFromFtp()
{ var filepath = "DIAView//simple.png"; var stream = FtpHelper.Download(filepath); return File(stream, FileHelper.GetContentType(".png"),"test.png");
}上傳:
public static bool UpLoad(Stream localFileStream, string remoteFile)
{ bool result = true; try
{ var ftpRequest = FtpRequest(Path + remoteFile, WebRequestMethods.Ftp.UploadFile); var ftpStream = ftpRequest.GetRequestStream(); var byteBuffer = new byte[bufferSize]; int bytesSent = localFileStream.Read(byteBuffer, 0, bufferSize); try
{ while (bytesSent != 0)
{
ftpStream.Write(byteBuffer, 0, bytesSent);
bytesSent = localFileStream.Read(byteBuffer, 0, bufferSize);
}
} catch (Exception ex)
{
Console.WriteLine(ex.ToString());
result = false;
}
localFileStream.Close();
ftpStream.Close();
} catch (Exception ex)
{
Console.WriteLine(ex.ToString());
result = false;
} return result;
}調(diào)用:
[HttpPost] public JsonResult UploadFile(HttpPostedFileBase fileData)
{ if (fileData != null)
{ string fileName = Path.GetFileName(fileData.FileName);// 原始文件名稱
string saveName = Encrypt.GenerateOrderNumber() +"_"+fileName;
FtpHelper.UpLoad(fileData.InputStream, "DIAView" + "/" + saveName); return Json(new { Success = true, FileName = fileName, SaveName = saveName}, JsonRequestBehavior.AllowGet);
} return Json(new { Success = false, Message = "請選擇要上傳的文件!" }, JsonRequestBehavior.AllowGet);
}Ftp還可以設(shè)置不同用戶有不同的目錄,是以為記
上述就是小編為大家分享的FTP的文件如何管理了,如果剛好有類似的疑惑,不妨參照上述分析進行理解。如果想知道更多相關(guān)知識,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。
另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機、免備案服務(wù)器”等云主機租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務(wù)可用性高、性價比高”等特點與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應用場景需求。
名稱欄目:FTP的文件如何管理-創(chuàng)新互聯(lián)
分享地址:http://www.chinadenli.net/article30/dpoeso.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站營銷、網(wǎng)站制作、面包屑導航、外貿(mào)網(wǎng)站建設(shè)、品牌網(wǎng)站制作、企業(yè)建站
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容