【问题标题】:Block file during uploading on FTP在 FTP 上上传期间阻止文件
【发布时间】:2011-01-22 04:16:17
【问题描述】:

我有两个服务客户端和服务器。客户端在某些 ftp 上上传文件,服务器下载它。所以可能会出现客户端没有完成上传文件而服务器已经开始下载这个文件的情况。在那种情况下,我已经剪切了文件。怎么解决?

例如,当我上传并同时使用 FileZilla 下载它时,下载过程会等待上传完成然后开始下载。所以下载的文件不正确。

这里是上传代码:

request = (FtpWebRequest)FtpWebRequest.Create("ftp://192.168.99.3/"
+ file7z); 
request.Credentials = new NetworkCredential("login", "pass"); 
request.Method = WebRequestMethods.Ftp.UploadFile; 
request.Proxy = null;        
request.UsePassive = true; request.UseBinary = true;

byte[] fileContents = File.ReadAllBytes(all7zfullpath); 
request.ContentLength = fileContents.Length;

Stream stRequest = request.GetRequestStream(); 
stRequest.Write(fileContents, 0, fileContents.Length); 
stRequest.Close();

【问题讨论】:

    标签: c# upload ftp download locking


    【解决方案1】:

    一种解决方案是使用特殊名称或特殊文件夹上传文件,以使下载程序无法识别它。然后让客户端在文件完全上传后移动/重命名文件,以便服务器识别它。

    【讨论】:

    • 上传到文档根目录之外的目录也是一个很棒的主意——这是确保上传程序不被恶意使用所需的几个步骤之一。其他步骤包括在文件上传后检查/验证文件的内容;也就是说,如果它应该是 GIF,最好不要是 PHP 代码!
    【解决方案2】:

    如果您可以控制 FTP 服务器,则可以简单地锁定当前正在上传的任何文件。然后下载尝试将失败,直到上传完成。这样做的缺点是服务器必须经常重试。

    【讨论】:

      猜你喜欢
      • 2021-02-04
      • 1970-01-01
      • 1970-01-01
      • 2021-08-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-03-12
      • 2013-06-30
      相关资源
      最近更新 更多