高分求救,服务器之间同步的问题

Zeilg1981 2007-03-19 04:04:50
后台系统服务器上的图片,根据一定的规则组织好的目录结构。
要同步上传到前台图片FTP服务器上去,而且目录结构不能变化。
向FTP服务器上传文件可以用
CredentialCache myCache = new CredentialCache();
myCache.Add(new Uri("ftp://localhost"), "Basic", new NetworkCredential("user", "password"));

WebClient webClient = new WebClient();
webClient.Credentials = myCache;
webClient.UploadFile("ftp://localhost/1/1.jpg", "STOR", @"D:/1.jpg");
这种方法成功上传。
但是如果我需要保留图片的目录结构,也就是说有可能要新建目录该怎么办?
望大侠们解答,高分相送!
...全文
414 21 打赏 收藏 转发到动态 举报
写回复
用AI写文章
21 条回复
切换为时间正序
请发表友善的回复…
发表回复
sleepcraft 2007-03-20
  • 打赏
  • 举报
回复
MARK,过段时间可能也会用到这个
Zeilg1981 2007-03-20
  • 打赏
  • 举报
回复
不可能全部保留目录,因为客户更新图片比较频繁,而且,每次更新的数量都不多,但是图片总量很多...所以每次都重新Copy下目录不太现实
Zeilg1981 2007-03-20
  • 打赏
  • 举报
回复
再顶!!
neillove 2007-03-20
  • 打赏
  • 举报
回复
同步有几种方案
根据服务器端改变,而在FTP端创建
根据服务器端改变,而在FTP端删除
根据服务器与客户端比较时间差,不同就copy或Delete (one to one or one to many)
wuxing2006 2007-03-19
  • 打赏
  • 举报
回复
先压缩 再解压 目录全保留
Zeilg1981 2007-03-19
  • 打赏
  • 举报
回复
顶一下!明天再来看吧,要下班了~~:(
Zeilg1981 2007-03-19
  • 打赏
  • 举报
回复
hanguoji84(北飘) ( ) 信誉:98 Blog
==========================================
非常感谢北飘兄提供的办法。
但是,仔细想想还是有些困难。
首先,用WebService时的安全问题,难道要传递被加密的用户名和密码?
再者,用户的图片数量会越来越多的,有可能另外加一台专门的图片服务器,这时候WebService不就没用了?
HBJMSHOP 2007-03-19
  • 打赏
  • 举报
回复
做个镜像多省事
HBJMSHOP 2007-03-19
  • 打赏
  • 举报
回复
将数据据同步得了
handa5201 2007-03-19
  • 打赏
  • 举报
回复
学习!
hanguoji84 2007-03-19
  • 打赏
  • 举报
回复
服务器你能控制么?知道FTP的物理路径么?如果yes
建议你用web服务,web服务可以在你的FTP服务器上建立你想要建立的文件夹,也可以判断它们是否存在,你可以传递给web服务一个你想要建立的文件夹的名称的集合,然后让服务去判断它们是否存在,如不存在则建立,然后你就会知道你所需要的文件夹,通过你的webClient.UploadFile("ftp://localhost/1/1.jpg", "STOR", @"D:/1.jpg");
就可以进行上传了。
Zeilg1981 2007-03-19
  • 打赏
  • 举报
回复
而且,查看返回结果,好象只能去查看FtpWebResponse对象,它里面没有包含什么有关Directory的信息哦
Zeilg1981 2007-03-19
  • 打赏
  • 举报
回复
cpp2017(慕白兄) ( ) 信誉:100 Blog

通过 WebRequestMethods.Ftp.ListDirectory来查看现在目录

=============================================================
我也想过这个办法,但是如果我当前传给FtpWebRequest对象的URi包含当前ftp服务器中并不存在的目录,它是会抛出Exception的呀?
这个如何是好?难道要Try catch?
badboy168 2007-03-19
  • 打赏
  • 举报
回复
但是如果要判断某一个文件夹是否存在用什么方法?
===========================================
if(Directory.Exists(string directoryPath))
{
// 目录存在
}
else
{
// 目录不存在
}
heyjude1983 2007-03-19
  • 打赏
  • 举报
回复
你也可以使用UPNOW这样的工具来实现同步啊,不一定要通过代码嘛
hy_lihuan 2007-03-19
  • 打赏
  • 举报
回复
可以使用xml把
cpp2017 2007-03-19
  • 打赏
  • 举报
回复
通过 WebRequestMethods.Ftp.ListDirectory来查看现在目录
Zeilg1981 2007-03-19
  • 打赏
  • 举报
回复
自己看了下MSDN
创建文件夹可以用
CredentialCache myCache = new CredentialCache();
myCache.Add(new Uri("ftp://localhost"), "Basic", new NetworkCredential("FtpUser", "Tangliu1982"));

Uri serverURi = new Uri("ftp://localhost/2/");

FtpWebRequest fwr = (FtpWebRequest)WebRequest.Create(serverURi);
fwr.KeepAlive = true;
fwr.Method = WebRequestMethods.Ftp.MakeDirectory;
fwr.Credentials = myCache;
FtpWebResponse response = (FtpWebResponse)fwr.GetResponse();
this.Response.Write(response.StatusDescription);

这种办法创建
但是如果要判断某一个文件夹是否存在用什么方法?
lr21shiji 2007-03-19
  • 打赏
  • 举报
回复
可以自己写个程序定时 判断两个文件夹的内容是否相同 不同则按某一文件夹做相应修改
这个方法不是很好 但我用了 感觉可以
hegang888888888 2007-03-19
  • 打赏
  • 举报
回复
up
加载更多回复(1)

62,253

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

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