【问题标题】:Renaming a File via FTP on C# program在 C# 程序上通过 FTP 重命名文件
【发布时间】:2014-03-11 08:50:34
【问题描述】:

您好,当我尝试重命名 ftp 站点上的文件时,我的 C# 程序出现问题。它在执行重命名过程时返回错误。但它可以下载我尝试重命名的文件,也可以在 ftp 服务器上上传文件,所以我猜这与权限无关。

我还尝试使用我在程序中使用的相同登录名在命令提示符下执行此操作,但没有遇到任何错误。我成功地重命名了上面的任何文件。

错误信息是这样的:

远程服务器返回错误:(550) 文件不可用(例如,找不到文件,无法访问)。

这是我重命名文件的代码:

public void rename(string currentFileNameAndPath, string newFileName)
{
    try
    {
        /* Create an FTP Request */
        ftpRequest = (FtpWebRequest)WebRequest.Create(host + "/" + currentFileNameAndPath);
        /* Log in to the FTP Server with the User Name and Password Provided */
        ftpRequest.Credentials = new NetworkCredential(user, pass);
        /* When in doubt, use these options */
        ftpRequest.UseBinary = true;
        ftpRequest.UsePassive = false;
        ftpRequest.KeepAlive = false;
        ftpRequest.Proxy = null;
        /* Specify the Type of FTP Request */
        ftpRequest.Method = WebRequestMethods.Ftp.Rename;
        /* Rename the File */
        ftpRequest.RenameTo = newFileName;
        /* Establish Return Communication with the FTP Server */
        ftpResponse = (FtpWebResponse)ftpRequest.GetResponse();
        /* Resource Cleanup */
        ftpResponse.Close();
        ftpRequest = null;
    }
    catch (Exception ex) 
    { 
        MessageBox.Show(ex.ToString()); 
    }

    return;
}

【问题讨论】:

  • 这可能是一些事情。很可能您没有重命名(修改)文件的权限,但有读取权限。您还检查过函数中调用的当前和新文件名的路径实际上构造正确且有效吗?

标签: c# c#-4.0 ftp


【解决方案1】:

好吧,我决定只将文件移动到一个新目录而不是重命名它,因为我从一开始的目标就是避免在上传新文件时覆盖原始文件。

【讨论】:

    【解决方案2】:

    我在尝试重命名 AS400 服务器上的文件时遇到错误:“参数或参数中的语法错误”。

    我的问题是我用完整的 URI 填写了 .RenameTo 属性。即使将其缩短到文件夹路径也会产生相同的错误。由于我不想移动文件而只是重命名它,这对我有用:

    string fileToMove = "ftp://127.0.0.1/Folder1/File.csv";
    string renamedFile = "FileRenamed.old";
    
    FtpWebRequest ftpRenameFile = (FtpWebRequest)WebRequest.Create(fileToMove);
    ftpRenameFile.Credentials = new NetworkCredential(username, password);
    
    ftpRenameFile.Method = WebRequestMethods.Ftp.Rename;
    ftpRenameFile.RenameTo = renamedFile;   
    ftpRenameFile.UseBinary = false;
    ftpRenameFile.UsePassive = true; 
    
    FtpWebResponse renameResponse = (FtpWebResponse)ftpRenameFile.GetResponse();
    

    重命名的文件保留在同一目录中。

    【讨论】:

      【解决方案3】:

      我遇到了同样的错误。我认为您的源文件有子文件夹。您必须在目标文件夹中删除这些子文件夹。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-08-17
        • 2012-07-28
        • 2013-09-26
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多