FTPµÄÎļþÖÎÀí
ÓÉÓÚÍøÕ¾ÓÐÏÂÔØÎļþÐèÒªºÍÍøÕ¾±ðÀ룬ʹÓõ½ÁËFTPÖÎÀíÎļþ£¬ÕâÀï×öÒ»¸ö¼ò±ãµÄÕûÀí¡£
1.°²ÖÃFTP
ºÍ°²ÖÃiisÒ»Ñù¡£È«²¿¹´Ñ¡¡£
É趨վµãÃû³ÆºÍ;¾¶¡£
É趨ip¡£
Éí·ÝÊÚȨѡÖÐËùÓлáÔ±£¬¿ÉÒÔ¶Áд¡£
Íê³ÉÖ®ºó IIS¾Í»áÏÔÏÖ£º
2.Ôö¼ÓFTP»áÔ±
ÔËËã»ú-->ÖÎÀí-->µ±µØ»áÔ±ºÍ×é¡£ Ôö¼Ó»áÔ±£¬ÃèдΪFTP¡£
ÕâÀïÒªÉ趨»áÔ±µÄÃÜÂ뷽ʽ£¬È¥³ý¡°»áԱϴεǼʱ±ØÐè¸ü»»ÃÜÂ롱µÄÑ¡Ïî¡£
²»È»»áµÇ¼²»³É¹¦¡£±¨530´íÎó¡£
3.²âÊԵǼ
ftp ip ¾Í¿ÉÒ԰ݷá£ÏÔʾ230 user logged in ±íʾµÇ¼³É¹¦¡£
4.ÉÏ´«ÏÂÔØ
FtpHelper:
public static class FtpHelper { //¸ù±¾É趨 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ЧÀÍÆ÷ϵÄÏà¶Ô;¾¶</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); //É趨»áÔ±ÃûºÍÃÜÂë 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">Ä¿±êÎļþ¼Ð£ºÐ§ÀÍÆ÷ϵÄÏà¶Ô;¾¶ ²»ÌîΪ¸ùÃûÄ¿</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()) { //É趨»º³å´óС 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)); //É趨Á¬½Óµ½FTPµÄÕʺÅÃÜÂë reqFtp.Credentials = new NetworkCredential(Username, Password); //É趨¿ÒÇóÍê³Éºó¿É·ñ±£³ÖÁ¬½Ó reqFtp.KeepAlive = false; //Ö¸¶¨Ê©ÐÐÃüÁî reqFtp.Method = method; //Ö¸¶¨Êý¾Ý´«ÊäÀàÐÍ reqFtp.UseBinary = true; if (closedResponse) { var resp=reqFtp.GetResponse(); resp.Close(); } return reqFtp; } /// <summary> /// ÏÂÔØ /// </summary> /// <param name="localFile">Ä¿µÄλÖÃ</param> /// <param name="remoteFile">ЧÀÍÆ÷Ïà¶ÔλÖÃ</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">ЧÀÍÆ÷ϵÄÏà¶Ô;¾¶ °üÂÞÎļþÃû</param> public static void DeleteFileName(string fileName) { try { FtpRequest(Path + fileName, WebRequestMethods.Ftp.DeleteFile,true); } catch (Exception ex) { Console.WriteLine("ɾ³ýÎļþ³ö´í£º" + ex.Message); } } /// <summary> /// ´´½¨ÃûÄ¿ ÉÏ1¼¶±ØÐèÏÈ´æÔÚ /// </summary> /// <param name="dirName">ЧÀÍÆ÷ϵÄÏà¶Ô;¾¶</param> public static void MakeDir(string dirName) { try { FtpRequest(Path + dirName, WebRequestMethods.Ftp.MakeDirectory, true); } catch (Exception ex) { Console.WriteLine("´´Á¢ÃûÄ¿³ö´í£º" + ex.Message); } } /// <summary> /// ɾ³ýÃûÄ¿ ÉÏ1¼¶±ØÐèÏÈ´æÔÚ /// </summary> /// <param name="dirName">ЧÀÍÆ÷ϵÄÏà¶Ô;¾¶</param> public static void DelDir(string dirName) { try { FtpRequest(Path + dirName, WebRequestMethods.Ftp.RemoveDirectory,true); } catch (Exception ex) { Console.WriteLine("ɾ³ýÃûÄ¿³ö´í£º" + ex.Message); } } /// <summary> /// ´ÓftpЧÀÍÆ÷ÉÏ»ñµÃÎļþ¼ÐÁбí /// </summary> /// <param name="requedstPath">ЧÀÍÆ÷ϵÄÏà¶Ô;¾¶</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ЧÀÍÆ÷ÉÏ»ñµÃÎļþÁбí /// </summary> /// <param name="requedstPath">ЧÀÍÆ÷ϵÄÏà¶Ô;¾¶</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
Ö÷Èç¹ûͨ¹ý´´Á¢FtpRequestÀ´´¦ÖÃFtpÏà¹Ø¿ÒÇó¡£
public static FtpWebRequest FtpRequest(string requstUrl,string method,bool closedResponse=false) { var reqFtp = (FtpWebRequest) WebRequest.Create(new Uri(requstUrl)); //É趨Á¬½Óµ½FTPµÄÕʺÅÃÜÂë reqFtp.Credentials = new NetworkCredential(Username, Password); //É趨¿ÒÇóÍê³Éºó¿É·ñ±£³ÖÁ¬½Ó reqFtp.KeepAlive = false; //Ö¸¶¨Ê©ÐÐÃüÁî reqFtp.Method = method; //Ö¸¶¨Êý¾Ý´«ÊäÀàÐÍ reqFtp.UseBinary = true; if (closedResponse) { var resp=reqFtp.GetResponse(); resp.Close(); } return reqFtp; }
ÓÉÓÚÔÚMVCÍøÕ¾ÖÐʹÓõÄÎļþÁ÷µÄ·½Ê½¡£
ÏÂÔØ£º
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; }
µ÷È¡£º
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; }
µ÷È¡£º
[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»¹¿ÉÒÔÉ趨²»Ò»Ñù»áÔ±Óв»Ò»ÑùµÄÃûÄ¿£¬ÊÇÈÏΪ¼Ç
ÐÅÀµ¿´Á˱¾°¸ë¹ÀýÄãÒѾ°ÑÎÕÁË°ì·¨£¬¸ü¶à³öÉ«Çë¹Ø×¢°Ù·Ö°ÙÔ´ÂëÍøÆäËüÏà¹ØÎÄÕ£¡
Òý¼öÔĶÁ£º
ÔõÑùÓÃnodejs´î½¨Ð§ÀÍÆ÷
ÔõÑù½«Node.JS°ÚÉèµ½Heroku
ÒÔÉϾÍÊÇFTPµÄÎļþÖÎÀíµÄ¾ßÌåÄÚÈÝ£¬¸ü¶àÇë¹Ø×¢°Ù·Ö°ÙÔ´ÂëÍøÆäËüÏà¹ØÎÄÕ£¡
¸ÐлÄúµÄÖ§³Ö£¬ÎÒ»á¼ÌÐøŬÁ¦µÄ!
´ò¿ªÖ§¸¶±¦É¨Ò»É¨£¬¼´¿É½øÐÐɨÂë´òÉÍŶ
°Ù·Ö°ÙÔ´ÂëÍø ½¨Òé´òÉÍ1¡«10Ôª£¬ÍÁºÀËæÒ⣬¸ÐлÄúµÄÔĶÁ£¡