当我尝试在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;
}
答案 0 :(得分:0)
好吧,我决定只将文件移动到一个新目录而不是重命名,因为我的目标从一开始就是为了避免在我上传新文件时覆盖原始文件。
答案 1 :(得分:0)
尝试在AS400服务器上重命名文件时遇到错误:“参数或参数语法错误”。
我的问题是我在.RenameTo
属性中填写了完整的URI。即使将其缩短到文件夹路径也会产生相同的错误。由于我不想移动文件而只是重命名文件,因此它对我有用:
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();
重命名的文件位于同一目录中。
答案 2 :(得分:-1)
我有同样的错误。我认为你的源文件有子文件夹。您必须在目标文件夹中删除这些子文件夹。