解决方案 »

  1.   

    这是FTP服务器内部的设置或者那么处理的
    写文件时,没有开放文件共享,异常断开后,就变得不可独写了,只有服务器程序自己去处理
      

  2.   

    你用APPE + 文件名命令,追加文件数据看看(断点续传)
    http://blog.163.com/wy_msj/blog/static/134481322011830114231643/
      

  3.   

    我搞过断点续传,也是用socket发送命令。用的“SIZE 文件名”这个命令先获取上一次发送的文件大小。
    但是一样也是给我返回550 access denied。
    我也认为可能是服务端设置的问题。
    谢谢啊
      

  4.   

    虽然我不是很懂这方面的问题..但是我想说 c#不是有专门ftp的命名空间专门来处理ftp文件的吗?
    http://msdn.microsoft.com/zh-cn/library/system.net.ftpwebrequest(VS.80).aspx
    有这个东西了为嘛还要socket...
      

  5.   

    我下午也用FtpWebRequest 试过了,一样的。第一次连接异常断开后需要等个七八分钟才能开始第二次上传。否则都会给我返回550.可是服务端我设置允许上载时读取文件了,还有保留部分上载。
      

  6.   


    同意。有些人就是不会用.net。
      

  7.   

    告诉你很明白了。access denied 。文件被别的程序占用。你这时不太可能把ftp服务停掉。最好的方法先弄个文件名后缀,确定上传完之后,重命名。
      

  8.   


    同意。有些人就是不会用.net。
    一样的
      

  9.   


    如果你嫌FTP服务不好,那就换一个服务器程序吧。
      

  10.   

    服务端就是一个很普通的ftp站点,不是开发出来的
      

  11.   

    很明显FTP服务器不发送数据的情况下,检测不到断线,文件会被保持锁定几分钟,才导致如此的现象,可以换个FTP服务器软件
      

  12.   

    看来ftp服务器上的配置只给你写入的权限,没有给你修改和删除文件的权限,所以你没法删除、追加文件。估计服务器上应该是放置有一个程序,定时读取你上传的文件,所以在7、8分钟后就被那个程序自动删除了。让管理服务器的那方给你一个独立的目录和账号,开放那个目录完全的权限。
      

  13.   

    所有的权限都有,我的服务器是用iis搭的那种很普通的ftp服务器。没有任何程序。
      

  14.   

    想到解决办法了,但不完美。分享给大家。每次上传的时候上传的文件名起一个别名。等上传结束之后再把文件名改成原先的名字。这样即使出现掉线,第二次上传依然是自己的一个别名,不受服务器上第一次上传留下的那个残余文件的影响。但是第一次的这个残余文件什么时候删除是个问题。ftp服务端识别连接断开有一定的延时,在这段时间里是不能操作这个残余文件的。
      

  15.   

    我想到的办法不知道可不可取,比方说一个文件4G,你把文件分成若干数据包,每个包里面用xml里面的信息是这个包的索引大小,上次上传个包地址,本次上传包的地址,还有下次上传的地址,这样上传的时候中断续传就比较好解决