ftp 上传下载

合集下载

同步FTP上载/下载程序的实现技术

同步FTP上载/下载程序的实现技术
维普资讯
同步 F TP上 载 / 载 程 序 的 实 现 技 术 下
赵 洁
t 徽大学 工商管 理学 院 , 肥 安 合 20 3 ) 3 0 9
摘 要 : 常 意 义 上 的 FT 文 件 传 输 协 议 ) 户 程 序 都 是 指 纯 粹 的 异 步 上 戢 / 栽 通 P( 客 下
似 的 问题 。 面 先 简单 介 绍 一 下 系 统 需 求 。 下 该 系 统 是 一 个 基 于 l tr e n en t的 旅 游 业 务 处 理 系
统 。 户 通 过 B o s r 定单 , 后 根 据 定 单 客 rw e 下 然 由相 应 城 市 的 分公 司 依 据 定 单 办 理 业 务 ( 如 买 机 票 ) 办 理 成 功 后 上 门 送 票 , 在 收 款 后 , 并 将 送 票 信 息 通 过 手 持 机 ( 种 接 触 式 1 卡 一 c 机 ) 入 到 手持 机 中的 嵌 入 式 数据 库 中 。 输 由于 嵌 入 式 数 据 库 容 量 有 限 , 此 必 须 定 期 地 将 因 手 持 机 中 的 数 据 上 载 到 计 算 机 中 , 时 清 空 同 手 持 机 中 的数 据 库 。 这 个 过 程 中 , 了避 免 在 为 数 据 被 非 法 修 改 , 要 直 接 将 手 持 机 数 据 上 需 传 到 远 程 的 总 公 司数 据 库 中 , 时 从 总 公 司 同 下 载 空 的手 持 机 数 据 库 ( 是 由 于 手 持 机 中 这 的 嵌 入 式 数 据 库 不 支 持 记 录 的 删 除 , 以 只 所
存 在 什 么 技 术 难 题 , 多 开 发 者 也 都 著 文 在 许 这方 面进行 了论述 。 通常 意义上 的 F 但 TP客 户程 序都是指纯 粹 的异步上载 / 载程 序 , 下 这 类 程 序 与 Cu e TP、 s ]tF tF Ab o ue TP 等 的 功 能 基 本 相 同 但 在 实 际 应 用 开 发 中 , TP功 能 F 往 往 需 要 与 特 定 的 应 用 相 结 合 , 如 网 站 上 例 照 片的上传等 。 类 F 这 TP应 用 并 不 是 一 个 独

java实现FTP文件上传与文件下载

java实现FTP文件上传与文件下载

java实现FTP⽂件上传与⽂件下载本⽂实例为⼤家分享了两种java实现FTP⽂件上传下载的⽅式,供⼤家参考,具体内容如下第⼀种⽅式:package com.cloudpower.util;import java.io.File;import java.io.FileInputStream;import java.io.FileOutputStream;import java.io.IOException;import .TelnetInputStream;import .TelnetOutputStream;import .ftp.FtpClient;/*** Java⾃带的API对FTP的操作* @Title:Ftp.java* @author: 周玲斌*/public class Ftp {/*** 本地⽂件名*/private String localfilename;/*** 远程⽂件名*/private String remotefilename;/*** FTP客户端*/private FtpClient ftpClient;/*** 服务器连接* @param ip 服务器IP* @param port 服务器端⼝* @param user ⽤户名* @param password 密码* @param path 服务器路径* @author 周玲斌* @date 2012-7-11*/public void connectServer(String ip, int port, String user,String password, String path) {try {/* ******连接服务器的两种⽅法*******///第⼀种⽅法// ftpClient = new FtpClient();// ftpClient.openServer(ip, port);//第⼆种⽅法ftpClient = new FtpClient(ip);ftpClient.login(user, password);// 设置成2进制传输ftpClient.binary();System.out.println("login success!");if (path.length() != 0){//把远程系统上的⽬录切换到参数path所指定的⽬录ftpClient.cd(path);}ftpClient.binary();} catch (IOException ex) {ex.printStackTrace();throw new RuntimeException(ex);}}/*** 关闭连接* @author 周玲斌* @date 2012-7-11*/public void closeConnect() {try {ftpClient.closeServer();System.out.println("disconnect success");} catch (IOException ex) {System.out.println("not disconnect");ex.printStackTrace();throw new RuntimeException(ex);}}/*** 上传⽂件* @param localFile 本地⽂件* @param remoteFile 远程⽂件* @author 周玲斌* @date 2012-7-11*/public void upload(String localFile, String remoteFile) {this.localfilename = localFile;this.remotefilename = remoteFile;TelnetOutputStream os = null;FileInputStream is = null;try {//将远程⽂件加⼊输出流中os = ftpClient.put(this.remotefilename);//获取本地⽂件的输⼊流File file_in = new File(this.localfilename);is = new FileInputStream(file_in);//创建⼀个缓冲区byte[] bytes = new byte[1024];int c;while ((c = is.read(bytes)) != -1) {os.write(bytes, 0, c);}System.out.println("upload success");} catch (IOException ex) {System.out.println("not upload");ex.printStackTrace();throw new RuntimeException(ex);} finally{try {if(is != null){is.close();}} catch (IOException e) {e.printStackTrace();} finally {try {if(os != null){os.close();}} catch (IOException e) {e.printStackTrace();}}}}/*** 下载⽂件* @param remoteFile 远程⽂件路径(服务器端)* @param localFile 本地⽂件路径(客户端)* @author 周玲斌* @date 2012-7-11*/public void download(String remoteFile, String localFile) {TelnetInputStream is = null;FileOutputStream os = null;try {//获取远程机器上的⽂件filename,借助TelnetInputStream把该⽂件传送到本地。

ftp写法

ftp写法

ftp写法FTP,全称File Transfer Protocol,即文件传输协议,是一种用于在网络上进行文件传输的协议。

FTP的主要功能是在两台计算机之间进行文件或目录的上传和下载。

在使用FTP时,我们需要知道FTP服务器的地址、用户名和密码。

这些信息通常由FTP服务器管理员提供。

以下是一些基本的FTP写法:1. 连接FTP服务器在命令行中输入以下命令来连接FTP服务器:```ftp ftp.server```这里的"ftp.server"是FTP服务器的地址。

2. 登录FTP服务器在连接到FTP服务器后,你需要登录才能访问服务器上的文件。

输入以下命令:```user usernamepass password```这里的"username"和"password"分别是你的FTP用户名和密码。

3. 切换目录登录成功后,你可以使用"cd"命令切换到你想操作的目录:```cd directory```这里的"directory"是你想切换到的目录名称。

4. 上传文件使用"put"命令可以将本地文件上传到FTP服务器:```put localfile remotefile```这里的"localfile"是你要上传的本地文件名,"remotefile"是你想在FTP服务器上保存的文件名。

5. 下载文件使用"get"命令可以从FTP服务器下载文件:```get remotefile localfile```这里的"remotefile"是要下载的FTP服务器上的文件名,"localfile"是你想在本地保存的文件名。

6. 断开连接完成所有操作后,可以使用"bye"或"quit"命令断开与FTP服务器的连接:```bye```以上就是一些基本的FTP写法,通过这些命令,你可以在FTP服务器上进行文件的上传和下载操作。

ftp文件操作类(上传、下载、删除、创建、重命名、获取目录中的所有文件)

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下载上传文件可续传操作1.连接
双击filezilla.exe,输入连接
2.下载文件
2.1. 左侧选择下载至的位置;右侧选择要下载的文件,右击,选择“下载”
可查看下载进度
2.2. 断网后,显示在失败列表内
选中要续传的项目,右击选择“重置并将所有文件重新加入队列”
此时会列入【列队的文件】栏中
2.3. 网络重新连上后,选中要续传的项目,右击选择“处理队列”
会弹框提示目标文件已存在。

选择“续传”
点击确定后,会进行续传动作
3.上传文件
3.1 右侧选择下上传至的位置;左侧选择要上传的文件,右击,选择“上传”(或右击选择“添加文件到队列”,再至)
可查看上传进度
3.2. 断网后,显示在失败列表内
选中要续传的项目,右击选择“重置并将所有文件重新加入队列”
此时会列入【列队的文件】栏中
3.3. 网络重新连上后,选中要续传的项目,右击选择“处理队列”
会弹框提示目标文件已存在。

选择“续传”
点击确定后,会进行续传动作
上传成功。

JAVA中使用FTPClient实现文件上传下载实例代码

JAVA中使用FTPClient实现文件上传下载实例代码

JAVA中使⽤FTPClient实现⽂件上传下载实例代码在java程序开发中,ftp⽤的⽐较多,经常打交道,⽐如说向FTP服务器上传⽂件、下载⽂件,本⽂给⼤家介绍如何利⽤jakarta commons中的FTPClient(在commons-net包中)实现上传下载⽂件。

⼀、上传⽂件原理就不介绍了,⼤家直接看代码吧/*** Description: 向FTP服务器上传⽂件* @Version1.0 Jul 27, 2008 4:31:09 PM by 崔红保(cuihongbao@)创建* @param url FTP服务器hostname* @param port FTP服务器端⼝* @param username FTP登录账号* @param password FTP登录密码* @param path FTP服务器保存⽬录* @param filename 上传到FTP服务器上的⽂件名* @param input 输⼊流* @return 成功返回true,否则返回false*/publicstaticboolean uploadFile(String url,int port,String username, String password, String path, String filename, InputStream input) {boolean success = false;FTPClient ftp = new FTPClient();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 success;}ftp.changeWorkingDirectory(path);ftp.storeFile(filename, input);input.close();ftp.logout();success = true;} catch (IOException e) {e.printStackTrace();} finally {if (ftp.isConnected()) {try {ftp.disconnect();} catch (IOException ioe) {}}}return success;}<pre></pre>/*** Description: 向FTP服务器上传⽂件* @Version1.0 Jul 27, 2008 4:31:09 PM by 崔红保(cuihongbao@)创建* @param url FTP服务器hostname* @param port FTP服务器端⼝* @param username FTP登录账号* @param password FTP登录密码* @param path FTP服务器保存⽬录* @param filename 上传到FTP服务器上的⽂件名* @param input 输⼊流* @return 成功返回true,否则返回false*/public static boolean uploadFile(String url,int port,String username, String password, String path, String filename, InputStream input) {boolean success = false;FTPClient ftp = new FTPClient();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 success;}ftp.changeWorkingDirectory(path);ftp.storeFile(filename, input);input.close();ftp.logout();success = true;} catch (IOException e) {e.printStackTrace();} finally {if (ftp.isConnected()) {try {ftp.disconnect();} catch (IOException ioe) {}}}return success;}下⾯我们写两个⼩例⼦:1.将本地⽂件上传到FTP服务器上,代码如下:@Testpublicvoid testUpLoadFromDisk(){try {FileInputStream in=new FileInputStream(new File("D:/test.txt"));boolean flag = uploadFile("127.0.0.1", 21, "test", "test", "D:/ftp", "test.txt", in); System.out.println(flag);} catch (FileNotFoundException e) {e.printStackTrace();}}<pre></pre>@Testpublic void testUpLoadFromDisk(){try {FileInputStream in=new FileInputStream(new File("D:/test.txt"));boolean flag = uploadFile("127.0.0.1", 21, "test", "test", "D:/ftp", "test.txt", in); System.out.println(flag);} catch (FileNotFoundException e) {e.printStackTrace();}}2.在FTP服务器上⽣成⼀个⽂件,并将⼀个字符串写⼊到该⽂件中@Testpublicvoid testUpLoadFromString(){try {InputStream input = new ByteArrayInputStream("test ftp".getBytes("utf-8")); boolean flag = uploadFile("127.0.0.1", 21, "test", "test", "D:/ftp", "test.txt", input); System.out.println(flag);} catch (UnsupportedEncodingException e) {e.printStackTrace();}}<pre></pre>@Testpublic void testUpLoadFromString(){try {InputStream input = new ByteArrayInputStream("test ftp".getBytes("utf-8")); boolean flag = uploadFile("127.0.0.1", 21, "test", "test", "D:/ftp", "test.txt", input); System.out.println(flag);} catch (UnsupportedEncodingException e) {e.printStackTrace();}}⼆、下载⽂件从FTP服务器下载⽂件的代码也很简单,参考如下:/*** Description: 从FTP服务器下载⽂件* @Version. Jul , :: PM by 崔红保(cuihongbao@)创建* @param url FTP服务器hostname* @param port FTP服务器端⼝* @param username FTP登录账号* @param password FTP登录密码* @param remotePath FTP服务器上的相对路径* @param fileName 要下载的⽂件名* @param localPath 下载后保存到本地的路径* @return*/publicstaticboolean downFile(String url, int port,String username, String password, String remotePath,String fileName,String localPath) { boolean success = false;FTPClient ftp = new FTPClient();try {int reply;ftp.connect(url, port);//如果采⽤默认端⼝,可以使⽤ftp.connect(url)的⽅式直接连接FTP服务器ftp.login(username, password);//登录reply = ftp.getReplyCode();if (!FTPReply.isPositiveCompletion(reply)) {ftp.disconnect();return success;}ftp.changeWorkingDirectory(remotePath);//转移到FTP服务器⽬录FTPFile[] fs = ftp.listFiles();for(FTPFile ff:fs){if(ff.getName().equals(fileName)){File localFile = new File(localPath+"/"+ff.getName());OutputStream is = new FileOutputStream(localFile);ftp.retrieveFile(ff.getName(), is);is.close();}}ftp.logout();success = true;} catch (IOException e) {e.printStackTrace();} finally {if (ftp.isConnected()) {try {ftp.disconnect();} catch (IOException ioe) {}}}return success;}<pre></pre>。

C语言实现FTP客户端上传下载功能 ftpClient.h

C语言实现FTP客户端上传下载功能 ftpClient.h

#ifndef _ftpClient_h#define _ftpClient_h#include <stdio.h>#include <sys/socket.h>#include <sys/types.h>#include <netinet/in.h>#include <arpa/inet.h>#include <unistd.h>#include <string.h>#include <stdlib.h>#include <fcntl.h>#include <sys/stat.h>#include <errno.h>#include <dirent.h>/* 服务器回应响应码*/#define Establish_Successful "257"#define Establish_Fail "550"/* 客户端上传文件的目录路径*/#define CLIENTUPDIRPATH "../file/upfile/"/* 客户端上传文件夹路径*/#define DIRPATH "../file/"/* 下载文件到哪个目录*/#define CLIENTDOWNDIRPATH "../file/downfile/"#define BUFSIZE 128#define FILESIZE_213 213#define FILESIZE_550 550/*遍历目录下所有的文件保存在数组中*/extern int ftpControlConnect(int fd_control, int serverPort, char *serverIp); extern void ftpClientLogin(int fd,char *UserName, char *Password);extern int ftpServerIntoPassiveMode(int fd);extern int ftpDataConnect(int fd , int fd1, int passModePort, char *serverIp ); extern void ftpDownfilePassiveMode(int fd, int fd1, char *filename);extern void ftpUpfilePassiveMode(int fd, int fd1, char *filename);extern off_t getClientFileSize(char *filePath);extern off_t getServerFileSize(int fd, char *filename);extern void judgeFileIsServerAndUp(int fd ,int fd1, char *filename);extern void UploadDirectory(int fd, int fd1, int passModePort , char *serverIp, char *dirname);extern void showCurrentDir(int fd);extern void changeDirectory(int fd, char *dirname);extern void createDirectory(int fd, char *dirname);extern void deleteDirectory(int fd, char *dirname);extern void touchFile(int fd, char *filename);extern void deleteFile(int fd, char *filename);extern void setDataType(int fd, char *modeOption);extern void listFileInformation(int fd, char *filename);extern void setTransferMode(int fd, char *modeOption);extern void listDirectoryContent(int fd, char *dirname);extern void showContern(int fd);extern void ftpClientQuit(int fd);extern void ftpBreakpointContinuing(int fd, int fd1, int fd2, long offset,char *filename ); #endif。

Android使用ftp方式实现文件上传和下载功能

Android使用ftp方式实现文件上传和下载功能

Android使⽤ftp⽅式实现⽂件上传和下载功能近期在⼯作上⼀直再维护平台OTA在线升级项⽬,其中关于这个升级⽂件主要是存放于ftp服务器上的,然后客户端通过⾛ftp 协议⽅式下载⾄本地Android机进⾏⼀个系统升级操作。

那么今天将对ftp实现⽂件上传和下载进⾏⼀个使⽤总结,关于ftp这⽅⾯的理论知识如果不是太了解的各位道友,那么请移步作个具体的了解或者查阅相关资料。

那么先看看个⼈⼯作项⽬这个OTA升级效果图吧。

如下:下⾯是具体的接⼝实现:那么相关ftp的操作,已经被封装到ota.ftp这个包下,各位童鞋可以下载⽰例代码慢慢研究。

另外这个要是⽤ftp服务我们cline端需要再项⽬⼯程导⼊ftp4j-1.7.2.jar包这边作个使⽤的逻辑分析:⾸先在我们的项⽬⼯程FtpApplication中启动这个OtaService,其中OtaService作为⼀个服务运⾏起来,在这个服务⾥⾯拿到封装好ftp相关接⼝的DownLoad.java进⾏ftp⽂件操作,关键代码如下:public void startDownload() {// TODO Auto-generated method stubmDownLoad.start();}public void stopDownload() {mDownLoad.stop();}public void cancel() {mDownLoad.cancel();}public String getOldDate() {return mDownLoad.getDatabaseOldDate();}public String getOldVersion() {return mDownLoad.getDatabaseOldVersion();}public void checkVer(String serverRoot) {// TODO Auto-generated method stubmDownLoad = DownLoad.getInstance();mDownLoad.setServeRoot(serverRoot);mDownLoad.setFtpInfo(mApp.mFtpInfo);mDownLoad.checkUpgrade();}FTPToolkit.javapackage com.asir.ota.ftp;import it.sauronsoftware.ftp4j.FTPClient;import it.sauronsoftware.ftp4j.FTPFile;import java.io.File;import java.util.List;import com.asir.ota.clinet.PathToolkit;import com.asir.ota.ftp.DownLoad.MyFtpListener;/*** FTP客户端⼯具**/public final class FTPToolkit {private FTPToolkit() {}/*** 创建FTP连接** @param host* 主机名或IP* @param port* ftp端⼝* @param username* ftp⽤户名* @param password* ftp密码* @return ⼀个客户端* @throws Exception*/public static FTPClient makeFtpConnection(String host, int port,String username, String password) throws Exception {FTPClient client = new FTPClient();try {client.connect(host, port);if(username != null && password != null) {client.login(username, password);}} catch (Exception e) {throw new Exception(e);}return client;}/*** FTP下载⽂件到本地⼀个⽂件夹,如果本地⽂件夹不存在,则创建必要的⽬录结构 ** @param client* FTP客户端* @param remoteFileName* FTP⽂件* @param localPath* 存的本地⽂件路径或⽬录* @throws Exception*/public static void download(FTPClient client, String remoteFileName,String localPath, long startPoint, MyFtpListener listener) throws Exception {String localfilepath = localPath;int x = isExist(client, remoteFileName);File localFile = new File(localPath);if (localFile.isDirectory()) {if (!localFile.exists())localFile.mkdirs();localfilepath = PathToolkit.formatPath4File(localPath+ File.separator + new File(remoteFileName).getName());}if (x == FTPFile.TYPE_FILE) {try {if (listener != null)client.download(remoteFileName, new File(localfilepath),startPoint, listener);elseclient.download(remoteFileName, new File(localfilepath), startPoint);} catch (Exception e) {throw new Exception(e);}} else {throw new Exception("the target " + remoteFileName + "not exist");}}/*** FTP上传本地⽂件到FTP的⼀个⽬录下** @param client* FTP客户端* @param localfile* 本地⽂件* @param remoteFolderPath* FTP上传⽬录* @throws Exception*/public static void upload(FTPClient client, File localfile,String remoteFolderPath, MyFtpListener listener) throws Exception {remoteFolderPath = PathToolkit.formatPath4FTP(remoteFolderPath);try {client.changeDirectory(remoteFolderPath);if (!localfile.exists())throw new Exception("the upload FTP file"+ localfile.getPath() + "not exist!");if (!localfile.isFile())throw new Exception("the upload FTP file"+ localfile.getPath() + "is a folder!");if (listener != null)client.upload(localfile, listener);elseclient.upload(localfile);client.changeDirectory("/");} catch (Exception e) {throw new Exception(e);}}/*** FTP上传本地⽂件到FTP的⼀个⽬录下** @param client* FTP客户端* @param localfilepath* 本地⽂件路径* @param remoteFolderPath* FTP上传⽬录* @throws Exception*/public static void upload(FTPClient client, String localfilepath,String remoteFolderPath, MyFtpListener listener) throws Exception {File localfile = new File(localfilepath);upload(client, localfile, remoteFolderPath, listener);}/*** 批量上传本地⽂件到FTP指定⽬录上** @param client* FTP客户端* @param localFilePaths* 本地⽂件路径列表* @param remoteFolderPath* FTP上传⽬录* @throws Exception*/public static void uploadListPath(FTPClient client,List<String> localFilePaths, String remoteFolderPath, MyFtpListener listener) throws Exception { remoteFolderPath = PathToolkit.formatPath4FTP(remoteFolderPath);try {client.changeDirectory(remoteFolderPath);for (String path : localFilePaths) {File file = new File(path);if (!file.exists())throw new Exception("the upload FTP file" + path + "not exist!");if (!file.isFile())throw new Exception("the upload FTP file" + path+ "is a folder!");if (listener != null)client.upload(file, listener);elseclient.upload(file);}client.changeDirectory("/");} catch (Exception e) {throw new Exception(e);}}/*** 批量上传本地⽂件到FTP指定⽬录上** @param client* FTP客户端* @param localFiles* 本地⽂件列表* @param remoteFolderPath* FTP上传⽬录* @throws Exception*/public static void uploadListFile(FTPClient client, List<File> localFiles,String remoteFolderPath, MyFtpListener listener) throws Exception {try {client.changeDirectory(remoteFolderPath);remoteFolderPath = PathToolkit.formatPath4FTP(remoteFolderPath);for (File file : localFiles) {if (!file.exists())throw new Exception("the upload FTP file" + file.getPath()+ "not exist!");if (!file.isFile())throw new Exception("the upload FTP file" + file.getPath()+ "is a folder!");if (listener != null)client.upload(file, listener);elseclient.upload(file);}client.changeDirectory("/");} catch (Exception e) {throw new Exception(e);}}/*** 判断⼀个FTP路径是否存在,如果存在返回类型(FTPFile.TYPE_DIRECTORY=1、FTPFile.TYPE_FILE=0、 * FTPFile.TYPE_LINK=2) 如果⽂件不存在,则返回⼀个-1** @param client* FTP客户端* @param remotePath* FTP⽂件或⽂件夹路径* @return 存在时候返回类型值(⽂件0,⽂件夹1,连接2),不存在则返回-1*/public static int isExist(FTPClient client, String remotePath) {remotePath = PathToolkit.formatPath4FTP(remotePath);FTPFile[] list = null;try {list = client.list(remotePath);} catch (Exception e) {return -1;}if (list.length > 1)return FTPFile.TYPE_DIRECTORY;else if (list.length == 1) {FTPFile f = list[0];if (f.getType() == FTPFile.TYPE_DIRECTORY)return FTPFile.TYPE_DIRECTORY;// 假设推理判断String _path = remotePath + "/" + f.getName();try {int y = client.list(_path).length;if (y == 1)return FTPFile.TYPE_DIRECTORY;elsereturn FTPFile.TYPE_FILE;} catch (Exception e) {return FTPFile.TYPE_FILE;}} else {try {client.changeDirectory(remotePath);return FTPFile.TYPE_DIRECTORY;} catch (Exception e) {return -1;}}}public static long getFileLength(FTPClient client, String remotePath) throws Exception {String remoteFormatPath = PathToolkit.formatPath4FTP(remotePath);if(isExist(client, remotePath) == 0) {FTPFile[] files = client.list(remoteFormatPath);return files[0].getSize();}else {throw new Exception("get remote file length error!");}}/*** 关闭FTP连接,关闭时候像服务器发送⼀条关闭命令** @param client* FTP客户端* @return 关闭成功,或者链接已断开,或者链接为null时候返回true,通过两次关闭都失败时候返回false*/public static boolean closeConnection(FTPClient client) {if (client == null)return true;if (client.isConnected()) {try {client.disconnect(true);return true;} catch (Exception e) {try {client.disconnect(false);} catch (Exception e1) {e1.printStackTrace();return false;}}}return true;}}包括登录,开始下载,取消下载,获取升级⽂件版本号和服务器版本校验等。

Centos 下搭建FTP上传下载服务器

Centos 下搭建FTP上传下载服务器

Centos 下搭建FTP 上传下载服务器
首先判断你服务器上是否安装了
vsftpd
安装
vsftpd
安装完成之后就要重启vsftpd
服务
到vsftpd 的主配置文件里面
把这个改为NO 默认是YES (改为NO 就是禁止匿名用户登录,不需要注释)如果希望你
的ftp 服务器
允许别人匿
名登录,那么这儿还是
改成YES
不可以让ftp
用户跳出自己的家目录,否则太危险了,需要做限制默认是注释掉的,把#号去掉然后重启vsftpd
创建ftp用户
(yuanfei这个用户智能连接ftp无法登录系统,默认家目录是在
var/www/html文件夹下面)
给yuanfei这个用户设置密码
然后给家目录修改权限,否则你无法上传文件
修改selinux
这一步是可以省略的,ftp服务器创建完成
后,使用任何一个用户均可以进行登录。

默认是enforcing把他修改为disabled
因为修改selinu后需要重启服务,因为服务器不可以重启所以执行上面这个命令,临时修改selinux的策略,无需重启!
重启vsftpd服务,并且下次自动启动
关闭防火墙
然后用软件来链接ftp测试一下
好了,整套的ftp服务配置完成,可以在本地链接上传下载了!。

sftp文件上传和下载

sftp文件上传和下载

sftp文件上传和下载下面是java 代码sftp文件上传和下载具体实现1.连接服务器类package Test;import java.io.IOException;import java.io.InputStream;import java.util.Properties;import com.jcraft.jsch.Channel;import com.jcraft.jsch.ChannelSftp;import com.jcraft.jsch.JSch;import com.jcraft.jsch.Session;/** @author lixiongjun** 利用JSch包实现创建ChannelSftp通信对象的工具类* 2015-1-27 上午10:03:21*/public class SftpUtil {private static String ip = null; // ip 主机IPprivate static int port = -1; // port 主机ssh2登陆端口,如果取默认值,传-1 private static String user = null; // user 主机登陆用户名private static String psw = null; // psw 主机登陆密码private static String servicePath = null; // 服务存储文件路径private static Properties prop = null;private static Session session = null;private static Channel channel = null;// 读取配置文件的参数static {prop = new Properties();ClassLoader cl = SftpUtil.class.getClassLoader(); InputStream is = cl.getResourceAsStream("Test/Sftp_UpDownload.properties"); try {prop.load(is);} catch (IOException e) {// System.out.println("读取配置文件出错!");e.printStackTrace();}ip = prop.getProperty("ip");port = Integer.parseInt(prop.getProperty("port"));user = prop.getProperty("user");psw = prop.getProperty("psw");servicePath = prop.getProperty("servicePath");}/*** 获取sftp通信** @return 获取到的ChannelSftp* @throws Exception*/public static ChannelSftp getSftp() throws Exception {ChannelSftp sftp = null;JSch jsch = new JSch();if (port <= 0) {// 连接服务器,采用默认端口session = jsch.getSession(user, ip);} else {// 采用指定的端口连接服务器session = jsch.getSession(user, ip, port);}// 如果服务器连接不上,则抛出异常if (session == null) {throw new Exception("session is null");}// 设置登陆主机的密码session.setPassword(psw);// 设置密码// 设置第一次登陆的时候提示,可选值:(ask | yes | no) session.setConfig("StrictHostKeyChecking", "no");// 设置登陆超时时间session.connect(30000);try {// 创建sftp通信通道channel = (Channel) session.openChannel("sftp"); channel.connect();sftp = (ChannelSftp) channel;// 进入服务器指定的文件夹sftp.cd(servicePath);} catch (Exception e) {e.printStackTrace();}return sftp;}/*** 关闭连接*/public static void closeSftp() {if (channel != null) {if (channel.isConnected())channel.disconnect();}if (session != null) {if (session.isConnected())session.disconnect();}}}2.上传下载工具类package Test;import java.io.BufferedReader;import java.io.BufferedWriter;import java.io.FileInputStream;import java.io.FileOutputStream;import java.io.IOException;import java.io.InputStream;import java.io.InputStreamReader;import java.io.OutputStream;import org.junit.Test;import com.jcraft.jsch.ChannelSftp;public class SftpUploadOrDownload {/** @author lixiongjun** 实现sftp文件上传下载的工具类* 2015-1-27 下午15:13:26*//*** 上传本地文件到服务器* @param srcPath 本地文件路径* @param dstFilename 目标文件名* @return 是否上传成功*/public boolean upload(String srcPath,String dstFilename){ ChannelSftp sftp=null;try {sftp =SftpUtil.getSftp();sftp.put(srcPath,dstFilename);return true;} catch (Exception e) {e.printStackTrace();return false;}SftpUtil.closeSftp();}}/*** 上传本地文件到服务器* @param in 输入流* @param dstFilename 目标文件名* @return 是否上传成功*/public boolean uploadBystrem(InputStream in,String dstFilename){ ChannelSftp sftp=null;try {sftp =SftpUtil.getSftp();sftp.put(in,dstFilename);return true;} catch (Exception e) {e.printStackTrace();return false;}finally{SftpUtil.closeSftp();}}/*** 把服务器文件下载到本地* @param desPath 下载到本地的目标路径* @param srcFilename 源文件名* @return 是否下载成功*/public boolean download(String srcFilename,String dstPath){ ChannelSftp sftp=null;try {sftp =SftpUtil.getSftp();sftp.get(srcFilename,dstPath);return true;} catch (Exception e) {e.printStackTrace();return false;}SftpUtil.closeSftp();}}/*** 获取服务器文件的内容,只对文本文件有效* @param srcFilename 服务器所在源文件名* @return 文件内容*/public String getServiceFileContext(String srcFilename){ ChannelSftp sftp=null;InputStream in=null;BufferedReader br=null;String filecontext="";try {sftp =SftpUtil.getSftp();in=sftp.get(srcFilename);br=new BufferedReader(new InputStreamReader(in)); String str=br.readLine();while(str!=null){filecontext+=str+"\n";str=br.readLine();}} catch (Exception e) {e.printStackTrace();}finally{try {br.close();in.close();} catch (IOException e) {e.printStackTrace();}SftpUtil.closeSftp();}return filecontext;}/*** 删除服务器上文件* @param filename 要删除的文件名* @return 是否删除成功*/public boolean remove(String filename){ ChannelSftp sftp=null;try {sftp =SftpUtil.getSftp();sftp.rm(filename);return true;} catch (Exception e) {e.printStackTrace();return false;}finally{SftpUtil.closeSftp();}}@Testpublic void TestSftpUpload(){if(upload("E:/test.txt","test.txt")){System.out.println("上传文件成功");}else{System.out.println("上传文件失败");}}@Testpublic void TestSftpDownload(){if(download("test.txt","E:/downtest.txt")){ System.out.println("下载文件成功");}else{System.out.println("下载文件失败");}}@Testpublic void TestSftpgetServiceFileContext(){String context=getServiceFileContext("test.txt"); System.out.println(context);}@Testpublic void TestSftpRemove(){if(remove("test.txt")){System.out.println("删除文件成功");}else{System.out.println("删除文件失败");}}}配置文件 Sftp_UpDownload.propertiesip=127.0.0.1port=22user=testpsw=testservicePath=testpath下载的get方法详情API /rangqiwei/article/details/9002046上传的put方法详情 API /longyg/archive/2012/06/25/2556576.html。

实验四 文件的上传和下载

实验四  文件的上传和下载

实验四文件的上传和下载6.1.3 FTP的访问形式用户对FTP服务的访问有两种形式:匿名FTP和用户FTP。

1.匿名FTP在Internet上用户使用FTP进行文件下载操作的优点是用户可以以“匿名”方式登录远程的FTP服务器。

匿名FTP允许远程用户访问FTP服务器,前提是可以同服务器建立物理连接。

无论用户是否拥有该FTP服务器的账号,都可以使用“anonymous”用户名进行登录,一般以E-mail地址做口令。

匿名FTP服务对用户的使用有一定的限制,通常只允许用户获取文件,而不允许用户修改现有的文件或向FTP服务器传送文件,并对用户获取文件的范围也有一定的限制。

这种FTP服务比较安全,能支持大多数文件类型。

2.用户FTP用户FTP方式为已在服务器建立了特定账号的用户使用,必须以用户名和口令来登录,这种FTP应用存在一定的安全风险。

当用户从Internet或Intranet与FTP服务连接时,所使用的口令是以明文方式传输的,接触系统的任何人都可以使用相应的程序来获取该用户的账号和口令,然后盗用这些信息在系统上登录,从而对系统产生威胁。

当然,对不同的用户,FTP 往往限制某些功能,防止用户对系统进行全面的访问或完全控制。

一些通过FTP开展的商业服务,赋予用户的账号和口令都是在短期内有效的临时账号。

另外,使用FTP还需要注意“端口”号。

端口是服务器使用的一个通道,它可以让具有同样地址的服务器同时提供多种不同的功能。

例如,一个地址为211.85.193.152的服务器,可以同时作为WWW服务器和FTP服务器,WWW服务器使用端口是80,而FTP服务器使用端口21。

6.1.4 FTP的常用命令FTP服务需要FTP客户来访问。

早期的FTP客户软件是以字符为基础的,与使用DOS 命令行列出文件和复制文件相似,以字符为基础的程序用于登录到远程计算机,浏览目录及传送文件。

当然更多的是专门的FTP客户软件,基于图形用户界面的客户软件,如CuteFTP,使用更加方便,功能也更强大。

telnet下上传下载文件的办法

telnet下上传下载文件的办法

echo bye >>ftp.txt 退出FTP服务器!
ftp -s:ftp.txt(这一步是关键哟)
del ftp.txt
这样srv.exe文件就下在下来了。保证srv.exe已经存在指定位置。
四:写程序下载
脚本是非常好的东西,只要把源码保存到一个文件中就能运行。所以在shell下,用echo语句直接写到一个文件中,在用相应的解释程序执行就可以啦。这里是一个程序实例的简化:
注意:那串长文件名要用""引起来,因为有空格
例子:C:\Documents and Settings\Administrator>start its:http://xxx.xxx.xxx.xxx/srv.
C:\Documents and Settings\Administrator\Local Settings\Temporary Internet Files\Content.IE5\0AB3MNO1 的目录
xPost.Open "GET",iRemote,0 >>c:\down.vbs
xPost.Send() >>c:\down.vbs
Set sGet = CreateObject("ADODB.Stream") >>c:\down.vbs
sGet.Mode = 3 >>c:\down.vbs
已复制 1 个文件
六。一句话下载。第4种方法的精简,有时很有用的
echo Set xPost = CreateObject(^"Microsoft.XMLHTTP^"):xPost.Open ^"GET^",^"/77169/c.exe^",0:xPost.Send():Set sGet = CreateObject(^"ADODB.Stream^"):sGet.Mode = 3:sGet.Type = 1:sGet.Open():sGet.Write(xPost.responseBody):sGet.SaveToFile ^"c:\c.exe^",2 >pig.vbs

ftp如何下载及使用

ftp如何下载及使用

更多详情请参阅:/printpage.asp?BoardID=4&ID=1822【教程专贴】教你如何下载FTP及如何使用影音传送带推荐FTP软件下载地址:/soft/2506.htm/soft/7249.htm很多人看到一些长篇的FTP教程就会没什么耐心看下去,现在就简明介绍一下。

希望对大家有所帮助。

1.FTP概述文件传输是指将文件从一台计算机上发送到另一台计算机上,传输的文件可以包括电子报表、声音、编译后的程序以及字处理程序的文档文件。

2.FTP中的两种工作方式A.Standard模式FTP的客户端发送PORT 命令到FTPserver (PORT模式)B.Passive模式FTP的客户端发送PASV命令到FTP Server (PASV模式)3. 怎样把PASV模式改为PORT模式?CuteFtp请点击---编辑----全局设置----连接类型----选择PORT或P ASV---然后确定。

flashfxp选项---参数设置----防火墙/代理/标识----把使用被动模式前的小勾取消即可leapftp站点管理器-----你要连接的站点-----高级---去掉pasv前面的勾4. [ ftp://A:B@C:F;;形式的说明]A代表用户名B代表密码C代表FTP 地址或者IP 地址F代表端口---------省略表示默认端口215.为什么FTP连接进去是空的,看不到文件?原因1:不支持PASV,请用PORT模式。

原因2:网站不支持list命令,找到具体的链接,用flashget下载6.FTP 常见错误及解决方法421错误:同时连接该ftp的人数过多,超出FTP设置的人数了,请等人少的时候再连接。

530“not login":用户名或密码错误,获得正确的密码重新连接。

“连接超时,无法连接”错误:该ftp暂时关机,可能是服务器重新启动,或者FTP进行维护,等FTP正常再连接。

“无法解析域名”:原因1:该ftp的域名输入错误,如漏打一个字母,使用了全角标点等。

ftp实验报告

ftp实验报告

ftp实验报告一、实验介绍FTP(File Transfer Protocol,文件传输协议)是一种常用的用于计算机之间进行文件传输的网络协议。

在本次实验中,我们将学习并掌握FTP的基本原理和操作方法,并通过实际操作验证FTP的可行性和实用性。

二、实验步骤1. 准备在实验开始前,我们需要确保计算机连接到互联网,并且已经安装了支持FTP协议的客户端软件。

常用的FTP客户端软件有FileZilla、CuteFTP等。

在本次实验中,我们选择使用FileZilla作为FTP客户端。

2. 配置FTP服务器为了进行文件传输,我们需要设置一个FTP服务器。

可以选择在本地建立一个FTP服务器,或者连接到现有的FTP服务器。

在本次实验中,我们将连接到一个现有的FTP服务器。

3. 连接FTP服务器打开FileZilla客户端,输入FTP服务器的地址、用户名和密码,点击连接按钮,即可与FTP服务器建立连接。

连接成功后,我们就可以进行文件传输的操作了。

4. 上传文件为了进行文件上传,我们需要将本地文件传输到FTP服务器上。

在FileZilla的界面中,左侧显示本地文件目录,右侧显示FTP服务器的文件目录。

我们可以通过简单的拖拽操作,将本地文件拖拽至右侧的文件目录中,即可完成文件上传的过程。

5. 下载文件为了进行文件下载,我们需要将FTP服务器上的文件传输到本地计算机上。

同样地,在FileZilla的界面中,通过简单的拖拽操作,将FTP服务器上的文件拖拽至左侧的文件目录中,即可完成文件下载的过程。

6. 断开连接当完成文件传输操作后,我们需要断开与FTP服务器的连接。

在FileZilla的界面中,点击断开按钮,即可断开与FTP服务器的连接。

三、实验结果通过实验,我们成功地使用FTP协议进行了文件的上传和下载操作。

在上传和下载过程中,FTP协议简单且高效,使文件传输变得更加便捷。

四、实验总结FTP作为一种常用的文件传输协议,被广泛应用于互联网中。

PHP从FTP服务器上下载文件的方法

PHP从FTP服务器上下载文件的方法

PHP从FTP服务器上下载文件的方法1.连接到FTP服务器:首先,需要使用`ftp_connect(`函数来与FTP服务器建立连接。

该函数接受FTP服务器的主机名或IP地址作为参数,并返回一个FTP连接资源。

```php$ftp_conn = ftp_connect($ftp_server);```2.登录到FTP服务器:使用`ftp_login(`函数来登录到FTP服务器。

该函数接受FTP连接资源、用户名和密码作为参数,并返回一个布尔值,表示登录是否成功。

```php$ftp_username = 'username';$ftp_password = 'password';$login_result = ftp_login($ftp_conn, $ftp_username,$ftp_password);``````php$remote_directory = '/path/to/remote/directory';$change_dir_result = ftp_chdir($ftp_conn, $remote_directory);``````php$local_file = '/path/to/save/file.txt';$remote_file = 'file.txt';$download_result = ftp_get($ftp_conn, $local_file, $remote_file, FTP_BINARY);```5.关闭FTP连接:使用`ftp_close(`函数来关闭与FTP服务器的连接。

该函数接受FTP 连接资源作为参数,并返回一个布尔值,表示连接是否关闭成功。

```php$close_result = ftp_close($ftp_conn);```完整的代码示例:```php//连接到FTP服务器$ftp_conn = ftp_connect($ftp_server);//登录到FTP服务器$ftp_username = 'username';$ftp_password = 'password';$login_result = ftp_login($ftp_conn, $ftp_username,$ftp_password);$remote_directory = '/path/to/remote/directory';$change_dir_result = ftp_chdir($ftp_conn, $remote_directory);$local_file = '/path/to/save/file.txt';$remote_file = 'file.txt';$download_result = ftp_get($ftp_conn, $local_file,$remote_file, FTP_BINARY);//关闭FTP连接$close_result = ftp_close($ftp_conn);if($download_result)} else```注意事项:- 在使用`ftp_connect(`函数时,可以指定FTP服务器的端口号作为第二个参数。

C# WinForm FTP上传批量下载

C# WinForm FTP上传批量下载

FTP上传下载一:上传单个文件public void uploadimg(){FileInfo fileInf = new FileInfo(textBox1.Text); //本地要上传的文件路径//上传的ftp路径+文件名string uri =@"ftp://222.168.10.108/images/"+textBox1.Text.Substring(stIndexOf('\\'));// 连接FtpWebRequest reqFTP;reqFTP = (FtpWebRequest)FtpWebRequest.Create(uri);eBinary = true; // 指定数据传输类型reqFTP.Credentials = new NetworkCredential("imgupload", "123456"); // ftp用户名和密码// 默认为true,连接不会被关闭// 在一个命令之后被执行reqFTP.KeepAlive = false;// 指定执行什么命令reqFTP.Method = WebRequestMethods.Ftp.UploadFile;//上传文件时通知服务器文件的大小reqFTP.ContentLength = fileInf.Length;//缓冲大小设置为kbint buffLength = 2048;byte[] buff = new byte[buffLength];int contentLen;// 打开一个文件流(System.IO.FileStream) 去读上传的文件FileStream fs = fileInf.OpenRead();//把上传的文件写入流Stream strm = reqFTP.GetRequestStream();// 每次读文件流的kbcontentLen = fs.Read(buff, 0, buffLength);// 流内容没有结束while (contentLen != 0){// 把内容从file stream 写入upload streamstrm.Write(buff, 0, contentLen);contentLen = fs.Read(buff, 0, buffLength);}// 关闭两个流strm.Close();fs.Close();}二:ftp遍历下载文件夹private string ftpUser = "imgupload"; //ftp用户名private string ftpPwd = "123456"; //ftp密码///<summary>///获取ftp服务器上的文件信息///</summary>///<returns>存储了所有文件信息的字符串数组</returns>ftppath指定要遍历的ftp文件夹路径public string[] GetFileList(string ftppath){StringBuilder result = new StringBuilder();FtpWebRequest reqFTP;reqFTP = (FtpWebRequest)FtpWebRequest.Create(new Uri(ftppath));eBinary = true;ePassive = false;reqFTP.Credentials = new NetworkCredential(ftpUser, ftpPwd);reqFTP.Method = WebRequestMethods.Ftp.ListDirectory;WebResponse response = reqFTP.GetResponse();StreamReader reader = new StreamReader(response.GetResponseStream());string line = reader.ReadLine();while (line != null){result.Append(line);result.Append("\n");line = reader.ReadLine();}result.Remove(result.ToString().LastIndexOf('\n'), 1);reader.Close();response.Close();return result.ToString().Split('\n');}Filepath:本地路径、filename:遍历的文件名、ftppath:ftp文件夹路径public void Download(string filePath, string fileName,string ftppath){FtpWebRequest reqFTP;try{FileStream outputStream = new FileStream(filePath + "\\" + fileName, FileMode.Create);reqFTP = (FtpWebRequest)FtpWebRequest.Create(new Uri(ftppath + "/" + fileName));reqFTP.Method = WebRequestMethods.Ftp.DownloadFile;eBinary = true;reqFTP.Credentials = new NetworkCredential(ftpUser, ftpPwd);FtpWebResponse response = (FtpWebResponse)reqFTP.GetResponse();Stream ftpStream = response.GetResponseStream();long cl = response.ContentLength;int bufferSize = 2048;int readCount;byte[] 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 ex){MessageBox.Show(ex.Message);}}url:ftp文件夹路径string[] ftpwenjianname = GetFileList(url);for (int i = 0; i < ftpwenjianname.Length; i++){Download("D://"+order+"", ftpwenjianname[i].ToString(), url); }通过FTP进行上传下载准备工作:在服务器上创建用户名和密码,赋予权限。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

FTP匿名上传下载
挂载cdrom到media目录,并且安装vstp的主程序包vsftpd-2.0.5-10.el5.i386.rpm
查看vsftpd
允许匿名用户访问
anonymous_enable=YES
允许匿名用户上传文件并可以创建目录
anon_upload_enable=YES
anon_mkdir_write_enable=YES
下面我们来一步一步的实现,先修改目录权限,创建一个公司上传用的目录,叫companydata,分配ftp用户所有,目录权限是766
root@localhost ftp}#Chmod –R 766 companydata
使用setsebool -P allow_ftpd_anon_write .命令设置布尔值
下面我们准备修改上下文
重启reboot
运行级别3,开启vsftpd服务
使用init3命令来运行,然后接下来的步骤如下图所示
测试:
首先我们来实现下载的功能,具体步骤如下
①在开始菜单中选择附件—运行,然后输入cmd
②重启一下ftp服务器(servers vsftpd restart)
③连接ftp,输入ftp 192.168.1.9
④用户名使用匿名登录anonymous
⑤密码使用任意键跳过
⑥显示连接成功。

如下图所示:
⑦然后我们进入companydata目录下
⑧使用dir来显示在这个目录下的文件有哪些,以便来下载
⑨使用get命令实现下载的功能,例如get homework.doc实现了从companydata的目录下下载了homework这个文件
上传:
上传和下载有两种方式,一种是像之前我们做过的用命令符的方式来实现上传和下载,下面让我们用图形界面的方式来来实现上传(#注#在使用命令符的时候put 上传;get 下载)具体步骤如下:
①打开我的电脑在网址栏里输入ftp的地址,连接到ftp
②找到你想上传的文件,直接复制到你想上传的ftp目录里
如下图所示:
通过上面简单的测试说明我们已经成功了,可以实现预期的想法,实现了ftp的上传下载,本次试验成功,并且使用了两种方法测试。

相关文档
最新文档