ftp安装使用及java上传代码
FTP Voyager JV 帮助

(1) 导航栏: 使用“屑粒”显示当前工作目录以表现路径中的每个目录。用户还可以在该工具栏内输入绝对 路径进行导航。 (2) 本地/远程工具栏: 显示可以在目录和/或文件上执行的操作。可以通过右键单击并切换每个按钮的 可视状态来定制该工具栏。 (3) 树型窗格: 以树型结构显示相应文件系统的文件夹。 (4) 预览窗格: 显示列表中选定文件的预览情况。 (5) 列表窗格: 显示罗列当前工作目录的文件。 (6) 搜索栏: 显示需要的控件以对当前工作目录执行搜索。
文件菜单
新建本地浏览
新建远程浏览器 新建一个与远程文件系统相关联的可停靠框架。
新建文件夹 新建一个位于 激活窗格 当前工作目录之下的目录。
打开 打开 激活窗格 中的目录或尝试使用针对文件扩展名所采用的系统默认程序来打开该文件。
删除 删除命令永久删除 激活窗格 中选定的项目。 注意: 取决于您的 FTP Voyager JV 设置,在执行删除操作前会提示您进行确认。
上传 下载
(5) 源路径
该列显示了当前正在传输的“源”文件的完整路径。
(6) 目标路径
该列显示了当前正在传输的“目标”文件的完整路径。
状态栏概述
“状态栏”位于主应用程序窗口的底部。它可以显示 FTP Voyager JV 各种操作的描述、当前已连接用户账户的 名称、安全连接标识符、以及会话的用时。
ftp服务器客户端使用方法

一:FTP服务器地址ftp://192.168.1.3二: 普通登陆方式方法一:打开计算机资源管理器在地址栏输入ftp://192.168.1.3回车出现以下对话框输入相应的用户名和密码即可。
登陆后如下图所示,就可以进入相应所属和权限的目录2 ie浏览器方式如下图在地址栏输入ftp://192.168.1.3/回车出现以下对话框输入相应的用户名和密码即可3 推荐方法用ftp客户端软件FlashFXPPortable打开FlashFXPPortable客户端软件如下图所示步骤或者点击菜单栏会话选项选择快速链接出现以下对话框在地址栏输入192.168.1.3用户名和密码处填写相应的用户和密码,选择链接即可进入相应权限的目录如下图所示FlashFXP的简单使用方法1.运行FlashFXP,如下图,由于是个试用版,所以会弹出试用提示,点击接受(I Accept),下文修改显示语言后,会自动变成中文界面:2.FlashFXP是多国语言版,我们可以通过修改设置更改显示语言。
依次点击Option——Language,选择Chinese Simplified即可修改为简体中文显示3.设置后的界面如下:4.我们要下载或上传文件,首先需要连接到FTP服务器,点击右侧顶部的闪电图标,选择快速连接,如下图:5.弹出快速连接设置窗口,如下图,一般只需要设置三个部分:服务器地址、用户名和密码,其中服务器地址栏可以填写IP地址或URL地址,如果是虚拟主机,请参加IDC的对应的主机管理后台,或IDC给你发送的邮件,一般都会包含FTP连接地址,同时也会提供用户名和密码用来登录使用。
端口一般都是默认,除非特别约定需要修改。
当然还有个前提就是你的机子现在可以登录网络。
并且对方FTP服务器也是开启连接的。
6.连接到FTP服务器后,右侧就会显示该用户授权根目录,如果右下角出现503错误,说明用户名或密码存在错误,如果出现socket错误,有些防火墙不支持被动模式连接,请取消被动模式(参下文),并且检查3000到3049端口是否开放访问,连接成功后,我们就可以上传下载文件了,不过为了安全起见,最好把本地目录另行指定到专门的管理目录。
ftp文件操作类(上传、下载、删除、创建、重命名、获取目录中的所有文件)

ftp⽂件操作类(上传、下载、删除、创建、重命名、获取⽬录中的所有⽂件)ftp⽂件操作类1using System;2using System.Collections.Generic;3using System.Linq;4using System.Text;5using ;6using System.IO;7using System.Data;8using ponentModel;9using System.Windows.Forms;10using System.Text.RegularExpressions;11using System.Globalization;12using System.Collections;1314namespace ESIMRobot15 {16#region⽂件信息结构17public struct FileStruct18 {19public string Flags;20public string Owner;21public string Group;22public bool IsDirectory;23public DateTime CreateTime;24public string Name;25 }26public enum FileListStyle27 {28 UnixStyle,29 WindowsStyle,30 Unknown31 }32#endregion3334///<summary>35/// ftp⽂件上传、下载操作类36///</summary>37public class FTPHelper38 {39private string ftpServerURL;40private string ftpUser;41private string ftpPassWord;4243///<summary>44///45///</summary>46///<param name="ftpServerURL">ftp服务器路径</param>47///<param name="ftpUser">ftp⽤户名</param>48///<param name="ftpPassWord">ftp⽤户名</param>49public FTPHelper(string ftpServerURL, string ftpUser, string ftpPassWord)50 {51this.ftpServerURL = ftpServerURL;52this.ftpUser = ftpUser;53this.ftpPassWord = ftpPassWord;54 }55///<summary>56///通过⽤户名,密码连接到FTP服务器57///</summary>58///<param name="ftpUser">ftp⽤户名,匿名为“”</param>59///<param name="ftpPassWord">ftp登陆密码,匿名为“”</param>60public FTPHelper(string ftpUser, string ftpPassWord)61 {62this.ftpUser = ftpUser;63this.ftpPassWord = ftpPassWord;64 }6566///<summary>67///匿名访问68///</summary>69public FTPHelper(string ftpURL)70 {71this.ftpUser = "";72this.ftpPassWord = "";73 }747576//**************************************************** Start_1 *********************************************************//77///<summary>78///从FTP下载⽂件到本地服务器,⽀持断点下载79///</summary>80///<param name="ftpFilePath">ftp⽂件路径,如"ftp://localhost/test.txt"</param>81///<param name="saveFilePath">保存⽂件的路径,如C:\\test.txt</param>82public void BreakPointDownLoadFile(string ftpFilePath, string saveFilePath)83 {84 System.IO.FileStream fs = null;85 .FtpWebResponse ftpRes = null;86 System.IO.Stream resStrm = null;87try88 {89//下载⽂件的URI90 Uri uri = new Uri(ftpFilePath);91//设定下载⽂件的保存路径92string downFile = saveFilePath;9394//FtpWebRequest的作成95 .FtpWebRequest ftpReq = (.FtpWebRequest)96 .WebRequest.Create(uri);97//设定⽤户名和密码98 ftpReq.Credentials = new workCredential(ftpUser, ftpPassWord);99//MethodにWebRequestMethods.Ftp.DownloadFile("RETR")设定100 ftpReq.Method = .WebRequestMethods.Ftp.DownloadFile;101//要求终了后关闭连接102 ftpReq.KeepAlive = false;103//使⽤ASCII⽅式传送104 eBinary = false;105//设定PASSIVE⽅式⽆效106 ePassive = false;107108//判断是否继续下载109//继续写⼊下载⽂件的FileStream110if (System.IO.File.Exists(downFile))111 {112//继续下载113 ftpReq.ContentOffset = (new System.IO.FileInfo(downFile)).Length;114 fs = new System.IO.FileStream(115 downFile, System.IO.FileMode.Append, System.IO.FileAccess.Write);116 }117else118 {119//⼀般下载120 fs = new System.IO.FileStream(121 downFile, System.IO.FileMode.Create, System.IO.FileAccess.Write);122 }123124//取得FtpWebResponse125 ftpRes = (.FtpWebResponse)ftpReq.GetResponse();126//为了下载⽂件取得Stream127 resStrm = ftpRes.GetResponseStream();128//写⼊下载的数据129byte[] buffer = new byte[1024];130while (true)131 {132int readSize = resStrm.Read(buffer, 0, buffer.Length);133if (readSize == 0)134break;135 fs.Write(buffer, 0, readSize);136 }137 }138catch (Exception ex)139 {140throw new Exception("从ftp服务器下载⽂件出错,⽂件名:" + ftpFilePath + "异常信息:" + ex.ToString()); 141 }142finally143 {144 fs.Close();145 resStrm.Close();146 ftpRes.Close();147 }148 }149150151#region152//从FTP上下载整个⽂件夹,包括⽂件夹下的⽂件和⽂件夹函数列表153154///<summary>155///从ftp下载⽂件到本地服务器156///</summary>157///<param name="ftpFilePath">要下载的ftp⽂件路径,如ftp://192.168.1.104/capture-2.avi</param>158///<param name="saveFilePath">本地保存⽂件的路径,如(@"d:\capture-22.avi"</param>159public void DownLoadFile(string ftpFilePath, string saveFilePath)160 {161 Stream responseStream = null;162 FileStream fileStream = null;163 StreamReader reader = null;164try165 {166// string downloadUrl = "ftp://192.168.1.104/capture-2.avi";167 FtpWebRequest downloadRequest = (FtpWebRequest)WebRequest.Create(ftpFilePath);168 downloadRequest.Method = WebRequestMethods.Ftp.DownloadFile;169 downloadRequest.Credentials = new NetworkCredential(ftpUser, ftpPassWord);170 FtpWebResponse downloadResponse = (FtpWebResponse)downloadRequest.GetResponse();171 responseStream = downloadResponse.GetResponseStream();172173 fileStream = File.Create(saveFilePath);174byte[] buffer = new byte[1024];175int bytesRead;176while (true)177 {178 bytesRead = responseStream.Read(buffer, 0, buffer.Length);179if (bytesRead == 0)180break;181 fileStream.Write(buffer, 0, bytesRead);182 }183 }184catch (Exception ex)185 {186throw new Exception("从ftp服务器下载⽂件出错,⽂件名:" + ftpFilePath + "异常信息:" + ex.ToString()); 187 }188finally189 {190if (reader != null)191 {192 reader.Close();193 }194if (responseStream != null)195 {196 responseStream.Close();197 }198if (fileStream != null)199 {200 fileStream.Close();201 }202 }203 }204205206///<summary>207///列出当前⽬录下的所有⽂件和⽬录208///</summary>209///<param name="ftpDirPath">FTP⽬录</param>210///<returns></returns>211public List<FileStruct> ListCurrentDirFilesAndChildDirs(string ftpDirPath)212 {213 WebResponse webresp = null;214 StreamReader ftpFileListReader = null;215 FtpWebRequest ftpRequest = null;216try217 {218 ftpRequest = (FtpWebRequest)WebRequest.Create(new Uri(ftpDirPath));219 ftpRequest.Method = WebRequestMethods.Ftp.ListDirectoryDetails;220 ftpRequest.Credentials = new NetworkCredential(ftpUser, ftpPassWord);221 webresp = ftpRequest.GetResponse();222 ftpFileListReader = new StreamReader(webresp.GetResponseStream(),Encoding.GetEncoding("UTF-8")); 223 }224catch (Exception ex)225 {226throw new Exception("获取⽂件列表出错,错误信息如下:" + ex.ToString());227 }228string Datastring = ftpFileListReader.ReadToEnd();229return GetListX(Datastring);230231 }232233///<summary>234///列出当前⽬录下的所有⽂件235///</summary>236///<param name="ftpDirPath">FTP⽬录</param>237///<returns></returns>238public List<FileStruct> ListCurrentDirFiles(string ftpDirPath)239 {240 List<FileStruct> listAll = ListCurrentDirFilesAndChildDirs(ftpDirPath);241 List<FileStruct> listFile = new List<FileStruct>();242foreach (FileStruct file in listAll)243 {244if (!file.IsDirectory)245 {246 listFile.Add(file);247 }248 }249return listFile;250 }251252253///<summary>254///列出当前⽬录下的所有⼦⽬录255///</summary>256///<param name="ftpDirath">FRTP⽬录</param>257///<returns>⽬录列表</returns>258public List<FileStruct> ListCurrentDirChildDirs(string ftpDirath)259 {260 List<FileStruct> listAll = ListCurrentDirFilesAndChildDirs(ftpDirath);261 List<FileStruct> listDirectory = new List<FileStruct>();262foreach (FileStruct file in listAll)263 {264if (file.IsDirectory)265 {266 listDirectory.Add(file);267 }268 }269return listDirectory;270 }271272273///<summary>274///获得⽂件和⽬录列表(返回类型为: List<FileStruct> )275///</summary>276///<param name="datastring">FTP返回的列表字符信息</param>277private List<FileStruct> GetListX(string datastring)278 {279 List<FileStruct> myListArray = new List<FileStruct>();280string[] dataRecords = datastring.Split('\n');281 FileListStyle _directoryListStyle = GuessFileListStyle(dataRecords);282foreach (string s in dataRecords)283 {284if (_directoryListStyle != FileListStyle.Unknown && s != "")285 {286 FileStruct f = new FileStruct();287 = "..";288switch (_directoryListStyle)289 {290case FileListStyle.UnixStyle:291 f = ParseFileStructFromUnixStyleRecord(s);292break;293case FileListStyle.WindowsStyle:294 f = ParseFileStructFromWindowsStyleRecord(s);295break;296 }297if (!( == "." || == ".."))298 {299 myListArray.Add(f);300 }301 }302 }303return myListArray;304 }305///<summary>306///从Unix格式中返回⽂件信息307///</summary>308///<param name="Record">⽂件信息</param>309private FileStruct ParseFileStructFromUnixStyleRecord(string Record)310 {311 FileStruct f = new FileStruct();312string processstr = Record.Trim();313 f.Flags = processstr.Substring(0, 10);314 f.IsDirectory = (f.Flags[0] == 'd');315 processstr = (processstr.Substring(11)).Trim();316 cutSubstringFromStringWithTrim(ref processstr, '', 0); //跳过⼀部分317 f.Owner = cutSubstringFromStringWithTrim(ref processstr, '', 0);318 f.Group = cutSubstringFromStringWithTrim(ref processstr, '', 0);319 cutSubstringFromStringWithTrim(ref processstr, '', 0); //跳过⼀部分320string yearOrTime = processstr.Split(new char[] { '' }, StringSplitOptions.RemoveEmptyEntries)[2]; 321if (yearOrTime.IndexOf(":") >= 0) //time322 {323 processstr = processstr.Replace(yearOrTime, DateTime.Now.Year.ToString());324 }325 f.CreateTime = DateTime.Parse(cutSubstringFromStringWithTrim(ref processstr, '', 8));326 = processstr; //最后就是名称327return f;328 }329330///<summary>331///从Windows格式中返回⽂件信息332///</summary>333///<param name="Record">⽂件信息</param>334private FileStruct ParseFileStructFromWindowsStyleRecord(string Record)335 {336 FileStruct f = new FileStruct();337string processstr = Record.Trim();338string dateStr = processstr.Substring(0, 8);339 processstr = (processstr.Substring(8, processstr.Length - 8)).Trim();340string timeStr = processstr.Substring(0, 7);341 processstr = (processstr.Substring(7, processstr.Length - 7)).Trim();342 DateTimeFormatInfo myDTFI = new CultureInfo("en-US", false).DateTimeFormat;343 myDTFI.ShortTimePattern = "t";344 f.CreateTime = DateTime.Parse(dateStr + "" + timeStr, myDTFI);345if (processstr.Substring(0, 5) == "<DIR>")346 {347 f.IsDirectory = true;348 processstr = (processstr.Substring(5, processstr.Length - 5)).Trim();349 }350else351 {352string[] strs = processstr.Split(new char[] { '' }, 2);// StringSplitOptions.RemoveEmptyEntries); // true); 353 processstr = strs[1];354 f.IsDirectory = false;355 }356 = processstr;357return f;358 }359360361///<summary>362///按照⼀定的规则进⾏字符串截取363///</summary>364///<param name="s">截取的字符串</param>365///<param name="c">查找的字符</param>366///<param name="startIndex">查找的位置</param>367private string cutSubstringFromStringWithTrim(ref string s, char c, int startIndex)368 {369int pos1 = s.IndexOf(c, startIndex);370string retString = s.Substring(0, pos1);371 s = (s.Substring(pos1)).Trim();372return retString;373 }374375376///<summary>377///判断⽂件列表的⽅式Window⽅式还是Unix⽅式378///</summary>379///<param name="recordList">⽂件信息列表</param>380private FileListStyle GuessFileListStyle(string[] recordList)381 {382foreach (string s in recordList)383 {384if (s.Length > 10385 && Regex.IsMatch(s.Substring(0, 10), "(-|d)(-|r)(-|w)(-|x)(-|r)(-|w)(-|x)(-|r)(-|w)(-|x)"))386 {387return FileListStyle.UnixStyle;388 }389else if (s.Length > 8390 && Regex.IsMatch(s.Substring(0, 8), "[0-9][0-9]-[0-9][0-9]-[0-9][0-9]"))391 {392return FileListStyle.WindowsStyle;393 }394 }395return FileListStyle.Unknown;396 }397398399///<summary>400///从FTP下载整个⽂件夹401///</summary>402///<param name="ftpDirPath">FTP⽂件夹路径</param>403///<param name="saveDirPath">保存的本地⽂件夹路径</param>404///调⽤实例: DownFtpDir("FTP://192.168.1.113/WangJin", @"C:\QMDownload\SoftMgr");405///当调⽤的时候先判断saveDirPath的⼦⽬录中是否有WangJin⽬录,有则执⾏,没有创建后执⾏406///最终⽂件保存在@"C:\QMDownload\SoftMgr\WangJin"下407public bool DownFtpDir(string ftpDirPath, string saveDirPath)408 {409bool success = true;410try411 {412 List<FileStruct> files = ListCurrentDirFilesAndChildDirs(ftpDirPath);413if (!Directory.Exists(saveDirPath))414 {415 Directory.CreateDirectory(saveDirPath);416 }417foreach (FileStruct f in files)418 {419if (f.IsDirectory) //⽂件夹,递归查询421 DownFtpDir(ftpDirPath + "/" + , saveDirPath + "\\" + );422 }423else//⽂件,直接下载424 {425 DownLoadFile(ftpDirPath + "/" + , saveDirPath + "\\" + );426 }427 }428 }429catch (Exception e)430 {431 MessageBox.Show(e.Message);432 success = false;433 }434return success;435 }436#endregion437438439440///<summary>441///列出当前⽬录下的所有⼦⽬录和⽂件到TreeView控件中442///</summary>443///<param name="ftpDirPath"> FTP服务器⽬录</param>444///<param name="treeview">显⽰到TreeView控件中</param>445///<param name="treenode">TreeView控件的⼦节点</param>446public void ListCurrentDirFilesAndDirToTreeView(string ftpDirPath, TreeView treeview, TreeNode treenode) 447 {448if (ftpDirPath == "")449 {450 ftpDirPath = ftpServerURL;451 }452if (treeview != null)453 {454 treeview.Nodes.Clear();455 treenode = treeview.Nodes.Add(ftpDirPath);456 }457 List<FileStruct> files = ListCurrentDirFilesAndChildDirs(ftpDirPath);458foreach (FileStruct f in files)459 {460if (f.IsDirectory) //如果为⽬录(⽂件夹),递归调⽤461 {462 TreeNode td = treenode.Nodes.Add();463 ListCurrentDirFilesAndDirToTreeView(ftpDirPath + "/" + , null, td);464 }465else//如果为⽂件,直接加⼊到节点中466 {467 treenode.Nodes.Add();468 }469 }470 }471//************************************* End_1 ****************************//472473474475476//************************************ Start_2 ***************************//477///<summary>478///检测⽂件或⽂件⽬录是否存在479///</summary>480///<param name="ftpDirPath">ftp服务器中的⽬录路径</param>481///<param name="ftpDirORFileName">待检测的⽂件或⽂件名</param>482///<returns></returns>483///操作实例: ftpclient.fileOrDirCheckExist("FTP://192.168.1.113/Record/", "")484/// ftpclient.fileOrDirCheckExist("FTP://192.168.1.113/RecordFile/", "333.txt")485public bool fileOrDirCheckExist(string ftpDirPath, string ftpDirORFileName)486 {487bool success = true;488 FtpWebRequest ftpWebRequest = null;489 WebResponse webResponse = null;490 StreamReader reader = null;491try492 {493string url = ftpDirPath + ftpDirORFileName;494 ftpWebRequest = (FtpWebRequest)FtpWebRequest.Create(new Uri(url));495 ftpWebRequest.Credentials = new NetworkCredential(ftpUser, ftpPassWord);496 ftpWebRequest.Method = WebRequestMethods.Ftp.ListDirectory;497 ftpWebRequest.KeepAlive = false;498 webResponse = ftpWebRequest.GetResponse();499 reader = new StreamReader(webResponse.GetResponseStream());500string line = reader.ReadLine();501while (line != null)502 {503if (line == ftpDirORFileName)504 {505break;507 line = reader.ReadLine();508 }509 }510catch (Exception)511 {512 success = false;513 }514finally515 {516if (reader != null)517 {518 reader.Close();519 }520if (webResponse != null)521 {522 webResponse.Close();523 }524 }525return success;526 }527528529///<summary>530///获得⽂件和⽬录列表(返回类型为:FileStruct)531///</summary>532///<param name="datastring">FTP返回的列表字符信息</param>533public FileStruct GetList(string datastring)534 {535 FileStruct f = new FileStruct();536string[] dataRecords = datastring.Split('\n');537 FileListStyle _directoryListStyle = GuessFileListStyle(dataRecords);538if (_directoryListStyle != FileListStyle.Unknown && datastring != "")539 {540541switch (_directoryListStyle)542 {543case FileListStyle.UnixStyle:544 f = ParseFileStructFromUnixStyleRecord(datastring);545break;546case FileListStyle.WindowsStyle:547 f = ParseFileStructFromWindowsStyleRecord(datastring);548break;549 }550 }551return f;552 }553554555///<summary>556///上传557///</summary>558///<param name="localFilePath">本地⽂件名路径</param>559///<param name="ftpDirPath">上传到ftp中⽬录的路径</param>560///<param name="ftpFileName">上传到ftp中⽬录的⽂件名</param>561///<param name="fileLength">限制上传⽂件的⼤⼩(Bytes为单位)</param>562///操作实例: ftpclient.fileUpload(@"E:\bin\Debug\Web\RecordFile\wangjin\wangjin.txt", "FTP://192.168.1.113/Record/","123.txt",0 );563public bool UploadFile(FileInfo localFilePath, string ftpDirPath, string ftpFileName, long fileLength)564 {565bool success = true;566long filesize = 0;567 FtpWebRequest ftpWebRequest = null;568 FileStream localFileStream = null;569 Stream requestStream = null;570if (fileLength > 0)571 {572 filesize = fileLength * 1024 * 1024;573 }574if (localFilePath.Length <= filesize || filesize == 0)575 {576if (fileOrDirCheckExist(ftpDirPath.Substring(0, stIndexOf(@"/") + 1), ftpDirPath.Substring(stIndexOf(@"/") + 1))) 577 {578try579 {580string uri = ftpDirPath + ftpFileName;581 ftpWebRequest = (FtpWebRequest)FtpWebRequest.Create(new Uri(uri));582 ftpWebRequest.Credentials = new NetworkCredential(ftpUser, ftpPassWord);583 eBinary = true;584 ftpWebRequest.KeepAlive = false;585 ftpWebRequest.Method = WebRequestMethods.Ftp.UploadFile;586 ftpWebRequest.ContentLength = localFilePath.Length;587int buffLength = 2048; //定义缓存⼤⼩2KB588byte[] buff = new byte[buffLength];589int contentLen;590 localFileStream = localFilePath.OpenRead();591 requestStream = ftpWebRequest.GetRequestStream();592 contentLen = localFileStream.Read(buff, 0, buffLength);593while (contentLen != 0)594 {595 requestStream.Write(buff, 0, contentLen);596 contentLen = localFileStream.Read(buff, 0, buffLength);597 }598 }599catch (Exception)600 {601 success = false;602 }603finally604 {605if (requestStream != null)606 {607 requestStream.Close();608 }609if (localFileStream != null)610 {611 localFileStream.Close();612 }613 }614 }615else616 {617 success = false;618 MessageBox.Show("FTP⽂件路径不存在!");619 }620 }621else622 {623 success = false;624 MessageBox.Show("⽂件⼤⼩超过设置范围!" + "\n" + "⽂件实际⼤⼩为:" + localFilePath.Length + "\n" + "允许上传阈值为:" + (5 * 1024 * 1024).ToString()); 625 }626return success;627 }628629///<summary>630///下载⽂件631///</summary>632///<param name="ftpFilePath">需要下载的⽂件名路径</param>633///<param name="localFilePath">本地保存的⽂件名路径)</param>634///操作实例: ftpclient.fileDownload(@"E:\bin\Debug\Web\RecordFile\wangjin\459.txt", "FTP://192.168.1.113/Record/123.txt");635public bool DownloadFile( string localFilePath, string ftpFilePath)636 {637bool success = true;638 FtpWebRequest ftpWebRequest = null;639 FtpWebResponse ftpWebResponse = null;640 Stream ftpResponseStream = null;641 FileStream outputStream = null;642try643 {644 outputStream = new FileStream(localFilePath, FileMode.Create);645string uri = ftpFilePath;646 ftpWebRequest = (FtpWebRequest)FtpWebRequest.Create(new Uri(uri));647 ftpWebRequest.Credentials = new NetworkCredential(ftpUser, ftpPassWord);648 eBinary = true;649 ftpWebRequest.Method = WebRequestMethods.Ftp.DownloadFile;650 ftpWebResponse = (FtpWebResponse)ftpWebRequest.GetResponse();651 ftpResponseStream = ftpWebResponse.GetResponseStream();652long contentLength = ftpWebResponse.ContentLength;653int bufferSize = 2048;654byte[] buffer = new byte[bufferSize];655int readCount;656 readCount = ftpResponseStream.Read(buffer, 0, bufferSize);657while (readCount > 0)658 {659 outputStream.Write(buffer, 0, readCount);660 readCount = ftpResponseStream.Read(buffer, 0, bufferSize);661 }662 }663catch (Exception)664 {665 success = false;666 }667finally668 {669if (outputStream != null)670 {671 outputStream.Close();672 }673if (ftpResponseStream != null)674 {675 ftpResponseStream.Close();676 }677if (ftpWebResponse != null)679 ftpWebResponse.Close();680 }681 }682return success;683 }684685686///<summary>687///重命名688///</summary>689///<param name="ftpDirPath">ftp服务器中的⽬录</param>690///<param name="currentFilename">当前要修改的⽂件名</param>691///<param name="newFilename">修改后的新⽂件名</param>692///操作实例: ftpclientxy.fileRename("FTP://192.168.1.113/RecordFile/", "123.txt", "333.txt");693public bool RenameFile(string ftpDirPath, string currentFileName, string newFileName)694 {695bool success = true;696 FtpWebRequest ftpWebRequest = null;697 FtpWebResponse ftpWebResponse = null;698 Stream ftpResponseStream = null;699if (fileOrDirCheckExist(ftpDirPath.Substring(0, stIndexOf(@"/") + 1), ftpDirPath.Substring(stIndexOf(@"/") + 1))) 700 {701try702 {703string uri = ftpDirPath + currentFileName;704 ftpWebRequest = (FtpWebRequest)FtpWebRequest.Create(new Uri(uri));705 ftpWebRequest.Credentials = new NetworkCredential(ftpUser, ftpPassWord);706 eBinary = true;707 ftpWebRequest.Method = WebRequestMethods.Ftp.Rename;708 ftpWebRequest.RenameTo = newFileName;709 ftpWebResponse = (FtpWebResponse)ftpWebRequest.GetResponse();710 ftpResponseStream = ftpWebResponse.GetResponseStream();711 }712catch (Exception)713 {714 success = false;715 }716finally717 {718if (ftpResponseStream != null)719 {720 ftpResponseStream.Close();721 }722if (ftpWebResponse != null)723 {724 ftpWebResponse.Close();725 }726 }727 }728else729 {730 success = false;731 MessageBox.Show("FTP⽂件路径不存在!");732 }733return success;734 }735736///<summary>737///在⽬录下创建⼦⽬录738///</summary>739///<param name="ftpDirPath">ftp服务器中的⽬录</param>740///<param name="ftpFileDir">待创建的⼦⽬录</param>741///<returns></returns>742///操作实例: ftpclient.fileDirMake("FTP://192.168.1.113/RecordFile/", "WangJinFile")743public bool MakeDir(string ftpDirPath, string ftpFileDir)744 {745bool success = true;746 FtpWebRequest ftpWebRequest = null;747 WebResponse webResponse = null;748 StreamReader reader = null;749try750 {751string url = ftpDirPath + ftpFileDir;752 ftpWebRequest = (FtpWebRequest)FtpWebRequest.Create(new Uri(url));753// 指定数据传输类型754 eBinary = true;755 ftpWebRequest.Credentials = new NetworkCredential(ftpUser, ftpPassWord);756 ftpWebRequest.Method = WebRequestMethods.Ftp.MakeDirectory;757 webResponse = ftpWebRequest.GetResponse();758 }759catch (Exception)760 {761 success = false;762 }763finally765if (reader != null)766 {767 reader.Close();768 }769if (webResponse != null)770 {771 webResponse.Close();772 }773 }774return success;775 }776777778///<summary>779///删除⽬录中的⽂件780///</summary>781///<param name="ftpDirPath"></param>782///<param name="ftpFileName"></param>783///<returns></returns>784///操作实例: ftpclient.fileDelete("FTP://192.168.1.113/RecordFile/WangJinFile/", "333.txt")785public bool DeleteFile(string ftpDirPath, string ftpFileName)786 {787bool success = true;788 FtpWebRequest ftpWebRequest = null;789 FtpWebResponse ftpWebResponse = null;790 Stream ftpResponseStream = null;791 StreamReader streamReader = null;792try793 {794string uri = ftpDirPath + ftpFileName;795 ftpWebRequest = (FtpWebRequest)FtpWebRequest.Create(new Uri(uri));796 ftpWebRequest.Credentials = new NetworkCredential(ftpUser, ftpPassWord);797 ftpWebRequest.KeepAlive = false;798 ftpWebRequest.Method = WebRequestMethods.Ftp.DeleteFile;799 ftpWebResponse = (FtpWebResponse)ftpWebRequest.GetResponse();800long size = ftpWebResponse.ContentLength;801 ftpResponseStream = ftpWebResponse.GetResponseStream();802 streamReader = new StreamReader(ftpResponseStream);803string result = String.Empty;804 result = streamReader.ReadToEnd();805 }806catch (Exception)807 {808 success = false;809 }810finally811 {812if (streamReader != null)813 {814 streamReader.Close();815 }816if (ftpResponseStream != null)817 {818 ftpResponseStream.Close();819 }820if (ftpWebResponse != null)821 {822 ftpWebResponse.Close();823 }824 }825return success;826 }827828///<summary>829///获取⽬录的⼦⽬录数组830///</summary>831///<param name="ftpDirPath"></param>832///<returns></returns>833///操作实例: string []filedir = ftpclient.GetDeleteFolderArray("FTP://192.168.1.113/WangJinFile/"); 834public string[] GetDirArray(string ftpDirPath)835 {836string[] deleteFolders;837 FtpWebRequest ftpWebRequest = null;838 FtpWebResponse ftpWebResponse = null;839 Stream ftpResponseStream = null;840 StreamReader streamReader = null;841 StringBuilder result = new StringBuilder();842try843 {844 ftpWebRequest = (FtpWebRequest)FtpWebRequest.Create(new Uri(ftpDirPath));845 eBinary = true;846 ePassive = false;847 ftpWebRequest.Credentials = new NetworkCredential(ftpUser, ftpPassWord);848 ftpWebRequest.Method = WebRequestMethods.Ftp.ListDirectoryDetails;849 ftpWebResponse = (FtpWebResponse)ftpWebRequest.GetResponse();。
FTP服务安装与端口说明

FTP服务安装与端⼝说明FTP服务安装与端⼝说明FTP端⼝修改安装部署windo ws windo ws 2012⽂件服务哈哈,⾸先介绍⼀个FTP客户端管理⼯具使⽤截图如下:1. FTP服务介绍1.1 什么是FTPFTP(File Transfer Protocol)是⽂件传送协议的英⽂缩写,是⽤于Internet上的控制⽂件的双向传输的协议。
同时,它也是⼀个应⽤程序。
⽤户可以通过它把⾃⼰的PC机与世界各地所有运⾏FTP协议的服务器相连,允许⽤户在计算机之间传送⽂件,并且⽂件的类型不限,可以是⽂本⽂件也可以是⼆进制可执⾏⽂件、声⾳⽂件、图像⽂件、数据压缩⽂件等等。
1.2 FTP服务端⼝20端⼝,数据传输端⼝,⽤来上传下载21端⼝,命令传输端⼝,⽤来传输命令2 安装FTP服务器配置说明:windows 2012R22.1 添加服务器⾓⾊进⼊服务器管理器界⾯,选择添加⾓⾊和功能2.2 安装类型选择点击左边“安装类型”,然后单击“基于⾓⾊或基于功能的安装”,再单击“下⼀步(N)”2.3 服务器选择先单击“从服务器池中选择服务器”,再单击“本服务器的计算机名”,这个ip上只有本机,所以直接单击“下⼀步(N)”;2.4 服务器⾓⾊选择选择Web 服务器(IIS)安装 FTP服务器下⼀步直到安装完成。
安装完成。
3 FTP站点搭建3.1 添加FTP站点1. 打开ISS管理器2. 从⽹站选项,点击右侧的添加FTP站点3. 填写站点名称和物理路径FTP站点名称可以任意取,内容⽬录为服务器上提供上传、下载⽂件保存⽬录。
站点名称:⾃定义物理路径:即FTP上传下载⽂件的保存⽬录填写站点名称与物理路径后,下⼀步3.2 FTP站点配置3.2.1 ssl配置IP地址:可以选取指定IP,也可以默认,端⼝号:默认21,需要ssl认证的:勾选允许ssl,导⼊ssl证书;不需要的就选择⽆ssl(默认情况⽆ssl),勾选下⾯“⾃动启动FTP站点”,其他按图⽚填写即可,下⼀步3.2.2 ⾝份验证和授权信息配置⾝份认证基本: 登录时提供相应的⽤户名和⼝令,当⽤户不知道对⽅计算机的⽤户名和⼝令时就⽆法使⽤FTP服务。
Eclipse中Ant利用Ftp上传或下载文件

Eclipse AntWith Ftp 守望幸福
一、Eclipse中配置Ant
选择Window=>Preferences
选择Ant=〉Runtime
配置Ant home,默认的话Eclipse自带,或者设置Ant Home…目录
如果Ant运行需要依赖扩展的第三方库的话,需要选中Ant Home Entries目录添加Add Jars;
如,添加Ftp需要使用到的jar包!
二、Ant 入门新建Java工程
点击Finish后
新建build.xml文件
点击完成;
选中Ant build运行;
三、Ant工具Ftp上传文件配置Ant任务:
上传前:
文件上传成功
四、Ant工具Ftp下载文件获取文件前,myget目录为空
操作结束后,刷新整个工程
目录下获取文件run.sh成功;
五、Ant工具Ftp常用参数说明
ftp子节点<fileset>指定传输文件目录和文件名;具体请参照fileset用法;。
ftp工作流程

ftp工作流程FTP工作流程FTP是文件传输协议,它允许用户在不同计算机之间传输文件。
在本文中,我们将详细介绍FTP的工作流程。
1. 客户端连接FTP的工作流程始于客户端连接服务器。
客户端可以通过FTP软件连接到FTP服务器,输入用户名和密码进行验证。
一旦验证成功,客户端就可以与服务器建立连接并开始传输文件。
2. 命令传输客户端将FTP命令传输到服务器上。
这些命令可以是上传文件、下载文件、删除文件、更改文件权限等。
FTP命令是由客户端发起的,服务器则根据这些命令进行相应的操作。
3. 数据传输FTP的一个重要组成部分是数据传输。
当客户端发起上传或下载文件的命令时,服务器和客户端之间会建立数据连接。
数据连接可以是主动模式或被动模式。
在主动模式下,FTP客户端会向服务器发送一个PORT命令,告诉服务器它需要在哪个端口接收数据。
一旦服务器收到这个命令,它会将数据传输到客户端指定的端口上。
在被动模式下,服务器会向客户端发送一个端口号,客户端则连接到这个端口上接收数据。
4. 文件传输FTP的核心功能之一是文件传输。
一旦客户端和服务器建立了数据连接,文件就可以开始传输。
文件传输可以是上传文件或下载文件。
当客户端上传文件时,它会将文件传输到服务器上。
当客户端下载文件时,它会从服务器上下载文件。
5. 断开连接当文件传输完成后,客户端和服务器之间的连接会被断开。
在客户端和服务器之间建立连接是资源密集型的操作,因此FTP通常在文件传输完成后立即断开连接以释放资源。
总结FTP的工作流程包括客户端连接、命令传输、数据传输、文件传输和断开连接。
客户端和服务器之间的连接是FTP的核心组成部分。
通过FTP,用户可以在不同计算机之间传输文件。
solaris10下CrossFTP服务器应用攻略
solaris10下CrossFTP服务器应用攻略【IT168 专稿】FTP服务器用于上传、下载文件及文件夹,是Internet的3大基本服务(Web、FTP、E-mail)之一,在实际工作中有着比较重要的作用。
从Solaris 8中集成的wuftp服务器组件开始到Solaris 10一直没有变化,sun提供的这项服务并不完美。
在本章中,介绍使用CrossFTP服务器在solaris下的创建与配置方法。
一、安装CrossFTP服务器CrossFTP服务器是一个专业级的多平台FTP服务器, 使用java语言编写,提供了友好的界面.它性能优越,定制性强,更具备安全特性.初学者可以轻易的使用它开启一个ftp, 同时也适合高级用户的需要,先安装Java环境。
Solairs10在安装完成后会预装JDK的。
一般会有两个版本的JDK,一个是1.4.2,另一个是1.5.0。
在solaris10中JDK被安装的总目录是/usr/jdk,在这个目录下具体版本的JDK有其各自的目录。
例如:j2sdk1.4.2_08或者jdk1.5.0_04等。
可以用命令ps -ef|grep java来查看java进程是否已经启动。
ps -ef|grep javaRoot 878 1 0 18:05:55 ? 0:13 /usr/bin/java -jar /usr/lib/patch/swupna.jar -waitroot 950 1 0 18:09:45 ? 0:18 /usr/jdk/instances/jdk1.5.0/jre/bin/java -Xbootclasspath/a:/usr/jdk/instances/jroot 966 956 0 18:16:48 pts/5 0:00 grep java1. 使用java web start安装Java Web Start 是一个软件技术,它包含了 applet 的可移植性、Servlet 和 JavaServer Pages (JSP)的可维护性以及象 XML 和 HTML 这样的标记语言的简易性。
java 不同系统之间传输数据的方法
java 不同系统之间传输数据的方法Java是一种强大且广泛应用的编程语言,用于开发各种类型的应用程序。
在实际开发中,经常需要在不同的系统之间传输数据。
本文将介绍一些常用的方法来实现Java不同系统之间的数据传输。
1. 使用Socket通信Socket通信是一种常用的网络通信方式,可以实现不同系统之间的数据传输。
通过Socket,我们可以在客户端和服务器之间建立一条双向通道进行数据交换。
在Java中,可以使用Java的原生Socket库来实现Socket通信。
客户端和服务器端通过准确的IP地址和端口号来建立连接。
客户端可以使用Socket类来与服务器进行通信,而服务器则使用ServerSocket类监听并接受客户端连接。
2. 使用HTTP协议HTTP协议是一种应用层协议,常用于Web应用程序中。
通过HTTP协议,不同系统之间可以通过发送和接收HTTP请求和响应来进行数据传输。
在Java中,可以使用Java的HttpURLConnection类或者第三方库,如Apache 的HttpClient来实现HTTP通信。
通过发送HTTP请求,可以将数据以请求参数或JSON/XML等格式发送到目标系统,并接收目标系统的HTTP响应。
3. 使用WebServiceWebService是一种通过网络进行通信的软件系统。
它可以使不同系统之间的应用程序通过Web服务接口进行数据传输和交互。
在Java中,可以使用Java的JAX-WS和JAX-RPC等API来开发和使用WebService。
通过定义WebService接口和实现相应的服务端和客户端,可以在不同系统之间轻松地传输数据。
4. 使用消息队列消息队列是一种常用的异步通信方式,允许不同系统之间以消息的形式传递数据。
消息队列将数据发送方发送的消息存储在队列中,接收方从队列中接收并处理消息。
在Java中,可以使用ActiveMQ、RabbitMQ等消息中间件来实现消息队列。
FTP介绍
最近一段时间,因为公司项目的需要,对HTTP协议以及FTP 协议都有所了解,并且在基于网络开放源代码基础上,能够完成项目的要求。
今天给大家分享下,怎样建立属于我们自己的FTP服务器以及FPT客户端,同时非常非常感谢这些开源软件及其作者为IT行业做出的贡献,最大程度上至少解放了我们这些IT码农。
且看正文。
本文主要内容:1、FTP服务端部署---- 基于Android中SwiFTP开源软件介绍;2、FTP客户端部署--- 基于ftp4j开源jar包的客户端开发;3、使用步骤--- 如何测试我们搭建的FTP可操作性。
本文所涉及到的知识、文档、源代码照旧会在文章末尾列出。
欢迎大家一起学习。
一、 FTP服务端部署SwiFTP开源软件是为Android系统开发,也就是说我们可以将其源代码嵌入到我们的项目中。
当然,对其进行一定改造还是必不可少的。
这儿只是从感官上对SwiFTP的运行效果图进行一下说面,以便帮助大家有初步认识:SwiFTP 资料信息:Google Download 介绍:/p/swiftp/downloads/listGitHub 介绍:https:///ppareit/swiftpAndroid版本SwiFTP截图界面其实很简单,但是从设计角度分析,SwiFTP框架系统还是值得我们研究的,当然如果你想改造成属于自己的FTP服务器(一般就是改改用户名、密码、PWD(起始工作目录))等,那更得花时间去钻研了。
二、 FTP客户端部署接下来,重点介绍我们的主角ftp4j开源jar包,该jar包就是开发我们FTP客户端核心了。
ftp4j官网地址:http://www.sauronsoftware.it/projects/ftp4j/。
对比与AndroidSDK而言,也就是ftp4jSDK了,一切的一切(文档、源代码、示例)都可以在官网查询。
想要了解的同学,至少得保证把首页给整明白吧。
1、ftp4j概要官网描述如下:The ftp4j libraryimplementsa Java full-features FTP client. With ftp4j embedded in yourapplication you can : FTP site (directory listing included), cre ate, delete, transfer files(upload and download) , browse the remoteFTP site (directory listing included), create, delete,rename and move remote directories and files.关于FTP连接主要有如下几种方式:The ftp4j library can connect the remote FTP server:·Througha direct TCP/IPconnection. 一般就是直接连接了。
java实现文件上传和下载
java实现⽂件上传和下载本⽂实例为⼤家分享了java实现⽂件上传和下载的具体代码,供⼤家参考,具体内容如下⽂件的上传upload:⽂件上传客户端通过表单的⽂件域file 把客户端的⽂件上传保存到服务器的硬盘上页⾯⾸先对上传的表单有以下要求:必须有⽂件域:input type=file表单提交⽅式:method=post表单的 enctype=multipart/form-data<form method="post" action="/user/regist" enctype="multipart/form-data"><table style="border: chartreuse;solid:2px"><tr><th>⽤户名</th><td><input type="text" name="username"></td></tr><tr><th>密码</th><td><input type="password" name="password"></td></tr><tr><th>⽤户头像</th><td><input type="file" name="photo"> </td></tr><tr><td colspan="2"><input type="submit" value="提交"></td></tr></table></form>Servlet1)⾸先要导⼊以下两个jar包,通过commons-fileupload实现⽂件上传2)创建⼀个⼯⼚对象DiskFileItemFactory,在创建⼀个多部件表单解析器ServletFileUpload,构造⽅法传⼊⼯⼚对象3)解析器解析请求对象,获得⼀个list集合,其中list集合存储的是⼀个⼀个的fileItem对象,⼀个fileItem对应⼀个组件,也就是⼀个<input>4) 遍历集合⽤isFormField()⽅法判断是否为普通组件,然后着重处理⽂件域组件5)获取⽂件名,并⽤getRealPath⽅法获取服务器上传⽂件所在路径,创建新⽂件夹6)获取输⼊流和创建输出流,进⾏⽂件的读写@WebServlet(value = "/user/regist")public class UploadServlet extends HttpServlet {protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {//创建⼀个⼯⼚对象DiskFileItemFactory factory = new DiskFileItemFactory();//创建⼀个多部件解析器对象ServletFileUpload fileUpload = new ServletFileUpload(factory);User user = new User();FileOutputStream out=null;try {//⽤解析器对象解析请求,返回⼀个FileItem类型的集合List<FileItem> list = fileUpload.parseRequest(req);for (FileItem fileItem : list) {/*** fileItem.getFieldName());:::获取组件的name值* fileItem.getName());::::获取⽂件域的⽂件名* fileItem.getSize());::::获取数据的字节个数* fileItem.getString());::::获取数据的字符串* fileItem.isFormField());:::判断是否为普通组件*///判断部件是否为普通组件if (fileItem.isFormField()) {//普通组件//获取组件名字也就是name的值String fieldName = fileItem.getFieldName();//获取组件的值也就是value的值String value = fileItem.getString("utf-8");if ("username".equals(fieldName)) { //设置实体类的属性user.setUsername(value);} else if ("password".equals(fieldName)) {user.setPassword(value);}} else {// ⽂件域//获取⽂件名String fielName = fileItem.getName();//输⼊流来读数据InputStream in = fileItem.getInputStream();//设置⽂件写出的路径,并⽤随机码来保证图⽚可以重复String path=req.getServletContext().getRealPath("/imgs/"+ UUID.randomUUID()+fielName);System.out.println("⽂件路径为:"+path);File file = new File(path);out = new FileOutputStream(file);//利⽤commons-io-1.4.jar的IOUtils的copy⽅法直接实现⽂件的复制IOUtils.copy(in,out);user.setPhoto(file.getName());}}} catch (Exception e) {e.printStackTrace();}finally {if(out!=null){out.close();}}req.getSession().setAttribute("user",user);req.getRequestDispatcher("/sucess.jsp").forward(req,resp);}}⽂件的下载页⾯只需⼀个超链接,传需要下载的⽂件名,或者直接输⼊路径在浏览器例: <a href="<c:url value='/file/download?fileName=14.jpg'/>" >狗狗1</a><br/>Servlet1)接收参数,获取⽂件名2)获取imgs的路径,也就是存储⽂件的⽂件夹的路径,然后创建⽂件,传⼊该路径和⽂件名3)创建输⼊流读取⽂件4)设置响应头,⾸先根据⽂件名字获取⽂件的⼤类型,设置响应头Content-Type指定响应的类型;设置响应头Content-Disposition,指定⽂件以附件形式保存到本地磁盘5)⽤响应获取输出流,读出⽂件到客户端@WebServlet("/user/download")public class DownloadServlet extends HttpServlet {protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {request.setCharacterEncoding("UTF-8");//获取要下载的⽂件名String fileName = request.getParameter("fileName");System.out.println(fileName);//获取服务器中存储图⽚的⽂件夹的路径String path1 = request.getServletContext().getRealPath("/imgs");String path=path1+"/"+fileName;File file = new File(path);//创建输⼊流读⽂件FileInputStream in = new FileInputStream(file);//通过⽂件名字获取⽂件的⼤类型String type = request.getServletContext().getMimeType(fileName);//设置响应头ContentType指定响应内容的类型response.setHeader("Content-type",type);//设置响应头Content-Disposition 指定以附件形式保存响应的信息response.setHeader("Content-Disposition","attachment;filename="+(URLEncoder.encode(fileName, "utf-8"))); ServletOutputStream out = response.getOutputStream();//实现⽂件的读写IOUtils.copy(in,out);if(in!=null){in.close();}}}以上就是本⽂的全部内容,希望对⼤家的学习有所帮助,也希望⼤家多多⽀持。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
FileZilla安装 1. 在官网下载server版本的FileZilla,我下载的是(The latest stable version of FileZilla Server is 0.9.41) 2. 然后直接安装就可了,我由于是测试使用:在安装到这一步时候我选择了第二项
Install as service ,started with Windows(default) 意思是:将FileZilla Server作为服务安装,并随Windows系统启动 Install as service,started Manually 意思是:将FileZilla Server作为服务安装,但手动启动 Do not install as service,start server automatically (not recommended) meaning:不将FileZilla Server作为服务安装,自动启动 141147是管理的端口号,不是我们访问时候的 3. 其他的我默认来了:这个是把本机作为服务器配置选项,填上密码。 4. 连接/断开”、“锁定”、“设置”、“用户设置”、“群组设置”、“关于”、“按逻辑名称显示”、“按物理名称显示”和“排列方式
5. 点开设置,这些设置网上说的很多,我安装默认的
点击logging,设置了一下日志参数 这样就可以在安装的目录下看到日志文件了 6. 一下文字来自网上转载: 用户及用户组设置 用户组的设置和用户的设置,并不是一定要同时存在的,完全可以只设置用户,而不设置用户组,但是,如果连接FTP Server的人比较多,那么最好还是设置一下用户组,一来便于管理,二来添加新的用户时也会方便很多 1) 添加组,如下图所示,添加website组,并对该组开放D盘,前面的“H”表示为FTP Server 的根目录,在右侧的选项中,可以对文件和目录的使用权限进行相应的设置
添加目录,并作为home目录 添加用户“gaea”,在添加的过程中,可以直接选择隶属于那个组,也可以不选择,需要注 意的是,如果选择了用户组后,不需要再对用户单独设置开放目录,用户的权限将和所在组完全一致。如果确有需要,也可以对单个用户单独开放目录,如下图所示 7. 添加用户 这里面我就添加一个不属于任何组的用户gaea,设置密码 基本上你就可以用这个用户对ftp服务器进行操作了。 8. 测试 打开浏览器,输入ftp:192.168.3.**:21,输入刚刚建的用户名和密码,就可以进入ftp查看文件了。注意:filezilla默认用的是utf-8编码,如果浏览器访问查看中文乱码,
只需在设置编码即可
网络复制内容: 三安全设置注意事项 安装Filezilla到非标准目录 安装过程中设置Filezilla的管理端口监听在127.0.0.1上的随机端口,例如38471等奇怪的没用的端口。 安装过程中设置Filezilla的管理密码,并设置密码足够复杂 在Filezilla目录下的xml配置文件上,设置Guests组禁止读取的权限 修改FTP登录后的提示信息为IIS、Serv-U等信息 不要开启SSL加密、SFTP等功能,避免以后出现漏洞
ftp上传java代码 1. 上传代码就写个简单的小例子。首先要加入jar包。commons-net-1.4.1.jar, 如果是用的maven管理jar包的话,加入如下配置: commons-net commons-net 1.4.1 2. 废话不多说,这里面给出代码: packagecom.bing.ftpupload; importjava.io.File; importjava.io.FileInputStream; importjava.io.IOException; importjava.io.InputStream; importorg.apache.commons.net.ftp.FTPClient; importorg.apache.commons.net.ftp.FTPReply;
publicclassFtpFileUpload {
publicstaticbooleanuploadFile(String url,// FTP服务器hostname int port,// FTP服务器端口 String username, // FTP登录账号 String password, // FTP登录密码 String path, // FTP服务器保存目录 String filename, // 上传到FTP服务器上的文件名 InputStream input // 输入流 ) { boolean result = false; FTPClient ftp = newFTPClient(); // ftp.setControlEncoding("UTF-8"); ftp.setControlEncoding("UTF-8"); try { int reply; ftp.connect(url, port);// 连接FTP服务器 // 如果采用默认端口,可以使用ftp.connect(url)的方式直接连接FTP服务器 ftp.login(username, password);// 登录 reply = ftp.getReplyCode(); if (!FTPReply.isPositiveCompletion(reply)) { ftp.disconnect(); return result; } ftp.setFileType(FTPClient.BINARY_FILE_TYPE); ftp.makeDirectory(path); ftp.changeWorkingDirectory(path); ftp.storeFile(filename, input); input.close(); ftp.logout(); result = true; } catch (IOException e) { e.printStackTrace(); } finally { if (ftp.isConnected()) { try { ftp.disconnect(); } catch (IOExceptionioe) { } } } return result; } /** * 将本地文件上传到FTP服务器上 * */ publicstaticbooleanupLoadFromProduction(String url,// FTP服务器hostname int port,// FTP服务器端口 String username, // FTP登录账号 String password, // FTP登录密码 String path, // FTP服务器保存目录 String filename, // 上传到FTP服务器上的文件名 String orginfilename// 输入流文件名 ) { try { FileInputStream in = newFileInputStream(new File(orginfilename)); boolean flag = uploadFile(url, port, username, password, path, filename, in); return flag; } catch (Exception e) { e.printStackTrace(); } returnfalse; } /** * 将本地文件上传到FTP服务器上 *这个方法和上面的方法作用一样,只是用了默认的文件名 */ publicstaticbooleanupLoadFromProduction(String url,// FTP服务器hostname int port,// FTP服务器端口 String username, // FTP登录账号 String password, // FTP登录密码 String path, // FTP服务器保存目录 String orginfilename// 输入流文件名 ) { try { String filename=newFile(orginfilename).getName(); boolean flag = upLoadFromProduction(url, port, username, password, path, filename, orginfilename); return flag; } catch (Exception e) { e.printStackTrace(); } returnfalse; } }