新手求教,关于FTP上文件操作

呆瓜丶 2016-02-23 11:13:54
在ftp服务器下FTP://*.*.*.*/A/的一个文件,我想把文件复制到FTP://*.*.*.*/B/下,代码该怎么写啊?
把文件下载到本地,再传到B目录下是不是太蠢了点
...全文
108 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
chen198881 2016-02-23
  • 打赏
  • 举报
回复
1.先获取FTP://*.*.*.*/A/ 目录文件 2.调用下载方法 3.将获取A目录调用上传复制到 FTP://*.*.*.*/B/
chen198881 2016-02-23
  • 打赏
  • 举报
回复
/// <summary> /// 构造实例 /// </summary> /// <param name="ip">IP地址,例如 127.0.0.1或127.0.0.1:其他端口号</param> /// <param name="userName">用户名</param> /// <param name="password">密码</param> public FtpUtil(string ip, string userName, string password) { _ip = ip; _userName = userName; _password = password; _root = "ftp://" + ip + "/"; }
chen198881 2016-02-23
  • 打赏
  • 举报
回复
/// <summary> /// 下载文件 /// </summary> /// <param name="ftpPath">ftp路径,例如 root/child/folder1/file.txt</param> /// <returns>字节数组</returns> public byte[] DownloadFile(string ftpPath) { MemoryStream memoryStream = null; FtpWebResponse ftpWebResponse = null; Stream stream = null; byte[] result; try { string requestUriString = Root + FixPath(ftpPath); memoryStream = new MemoryStream(); FtpWebRequest ftpWebRequest = (FtpWebRequest)WebRequest.Create(requestUriString); ftpWebRequest.Credentials = new NetworkCredential(_userName, _password); ftpWebRequest.Method = WebRequestMethods.Ftp.DownloadFile; ftpWebRequest.UseBinary = true; ftpWebResponse = (FtpWebResponse)ftpWebRequest.GetResponse(); stream = ftpWebResponse.GetResponseStream(); long contentLength = ftpWebResponse.ContentLength; int num = 2048; byte[] buffer = new byte[num]; for (int i = stream.Read(buffer, 0, num); i > 0; i = stream.Read(buffer, 0, num)) { memoryStream.Write(buffer, 0, i); } memoryStream.Position = 0; result = memoryStream.ToArray(); } catch (Exception exception) { throw exception; } finally { if (stream != null) stream.Close(); if (memoryStream != null) memoryStream.Close(); if (ftpWebResponse != null) ftpWebResponse.Close(); } return result; } /// <summary> /// 上传文件 /// </summary> /// <param name="ftpPath">ftp路径,例如 root/child/folder1/</param> /// <param name="buffer">字节数组</param> /// <param name="createDirectory">true:如果ftp目录不存在则创建,false:不检测目录是否存在,不存在抛异常</param> public void UploadFile(string ftpPath, byte[] buffer, bool createDirectory = false) { Stream stream = null; try { // 生成目录,如果此目录不存在 if (createDirectory) CreateDirectory(Path.GetDirectoryName(ftpPath)); string requestUriString = Root + FixPath(ftpPath); FtpWebRequest ftpWebRequest = (FtpWebRequest)WebRequest.Create(requestUriString); ftpWebRequest.Credentials = new NetworkCredential(_userName, _password); ftpWebRequest.Method = WebRequestMethods.Ftp.UploadFile; ftpWebRequest.KeepAlive = false; ftpWebRequest.UseBinary = true; ftpWebRequest.ContentLength = buffer.Length; stream = ftpWebRequest.GetRequestStream(); stream.Write(buffer, 0, buffer.Length); } catch (Exception exception) { throw exception; } finally { if (stream != null) stream.Close(); } }
Ny-6000 2016-02-23
  • 打赏
  • 举报
回复
直接复制,和你上传其实差别不大的
呆瓜丶 2016-02-23
  • 打赏
  • 举报
回复
引用 3 楼 chen198881 的回复:
1.先获取FTP://*.*.*.*/A/ 目录文件 2.调用下载方法 3.将获取A目录调用上传复制到 FTP://*.*.*.*/B/
我考虑到这个了。。就是有没有直接复制的方法?

110,571

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧